SORU
18 AĞUSTOS 2011, PERŞEMBE


Nasıl grep ifade ile eşleşen satırdan sonra dosya parçasını almak için ? (ilk maç)

Yaklaşık 1000 satırlık bir dosya var. Grep ifademi eşleşen satırdan sonra benim dosya parçasını istiyorum.

yani

$ cat file | grep 'TERMINATE'     // Its found on line 534

Yani satırından dosyayı istiyorum daha fazla işlem için 535 to line 1000.

Bunu nasıl yapabilirim ?

CEVAP
18 AĞUSTOS 2011, PERŞEMBE


Aşağıdaki will satırı dosyanın sonuna kadar TERMINATE eşleşen baskı

sed -n -e '/TERMINATE/,$p'

Açıkladı:-n devre dışı bırakır varsayılan davranış sed baskı her satırdan sonra executing script, -e belirtilen komut için sed, /TERMINATE/,$ Adres (satır) aralığı seçimi anlamını ilk satırı eşleşen TERMINATE düzenli ifade (grep) sonuna dosyası ($) ve p yazdırma komutu olan baskılar mevcut hat.

Şu aşağıdaki satırı dosyanın sonuna kadar TERMINATE eşleşen yazdırma

sed -e '1,/TERMINATE/d'

Açıkladı:1,/TERMINATE/ Adres (satır) aralığı seçimi anlamını ilk hat giriş 1 hat eşleştirme TERMINATE düzenli ifade ve d delete komutu silme mevcut hat ve atlamak için bir sonraki satır. sed varsayılan davranış satırları yazdırmak için, giriş sonuna kadar baskı TERMINATE sonra satırlar.

Düzenleme:

Eğer TERMINATE önce: satırları değneği

sed -e '/TERMINATE/,$d'

Ve eğer TERMINATE 2 tek seferde farklı dosyalar önce ve sonra: her iki hat isterseniz

sed -e '1,/TERMINATE/w before
/TERMINATE/,$w after' file

Ve dosyaları önce ve sonra ile sona satırı içerir, her işlem için kullanmanız gerekir:

head -n -1 before
tail -n  2 after

Edit2:

EĞER sabit kod sed dosya adları komut dosyası kullanmak istiyorsanız, yapabilirsiniz:

before=before.txt
after=after.txt
sed -e "1,/TERMINATE/w $before
/TERMINATE/,\$w $after" file

Ama o zaman için kaçış $ anlam son satırı kabuk yapmaya genişletmek $w değişken (unutmayın biz şimdi çift tırnak komut yerine tek tırnak).

Bu sed dosya sonunda öyle yeni satır komut adlarını sonra önemli olduğunu söylemeyi unuttum.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • RickardRick

    RickardRick

    9 Mart 2007
  • superemposed

    superemposed

    25 Aralık 2007
  • TecNoob

    TecNoob

    15 AĞUSTOS 2013