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
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.
eğer eşleşen bir sonra sadece bir sonr...
Nasıl Gıt belirli revizyon tek bir dos...
Nasıl grep sadece dosya adları (in-lin...
Nasıl bir dosya adı kullanarak uygun b...
Nasıl bir şube sadece bir dosya almak ...