vurulduktan sonra sonraki N satırlarını nasıl grep ve yazdırmak için?


17

Bir metin dosyasında bir oluşum için grep, sonra bulunan her olaydan sonra aşağıdaki N satırlarını yazdırmak istiyorum. Herhangi bir fikir?

Yanıtlar:


24

Grep, bunu (ve bunun gibi şeyleri) yapmanıza izin verecek aşağıdaki seçeneklere sahiptir. Daha fazla bilgi için kılavuz sayfasına göz atmak isteyebilirsiniz :

  • -A num Her eşlemeden sonra sondaki bağlamın num satırlarını yazdırır. Ayrıca -B ve -C seçeneklerine de bakın.

  • -B num Her eşlemeden önce önde gelen bağlamın num satırlarını yazdırır. Ayrıca -A ve -C seçeneklerine de bakın.

  • -C [num] Her bir eşleşmeyi çevreleyen baştaki ve sondaki bağlamın num satırlarını yazdırır. Varsayılan 2'dir ve -A2-B 2'ye eşdeğerdir. Not: seçenek ile argümanı arasında boşluk bırakılamaz.


7

GNU'nuz varsa grep, -A/ --after-contextseçeneğidir. Aksi takdirde, ile yapabilirsiniz awk.

awk '/regex/ {p = N}
     p > 0   {print $0; p--}' filename

1
awk '/regex/{p=2} p > 0 {print $0; p--}' filename- çalışıyor, senin değil.
BladeMight


3

Çizgileri eşleştirdikten sonra N satırı yazdır

Çizgileri eşleştirdikten sonra N satırı yazdırmak grepiçin -A nseçeneği kullanabilirsiniz .

Örneğin:

$ cat mytext.txt 
  Line1
  Line2
  Line3
  Line4
  Line5
  Line6
  Line7
  Line8
  Line9
  Line10

$ grep -wns Line5 mytext.txt -A 2
5:Line5
6-Line6
7-Line7

İlgili diğer seçenekler:

Çizgileri eşleştirmeden önce N satırı yazdır

-B nSeçeneği kullanarak satırları eşleştirmeden önce N satırı yazdırabilirsiniz.

$ grep -wns Line5 mytext.txt -B 2
3-Line3
4-Line4
5:Line5

Eşleşen satırlardan önce ve sonra N satır yazdırma

-C nSeçeneği kullanarak , eşleşen satırlardan önce ve sonra N satırı yazdırabilirsiniz.

$ grep -wns Line5 mytext.txt -C 2
3-Line3
4-Line4
5:Line5
6-Line6
7-Line7
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.