Pertanyaan grep file, tetapi menunjukkan beberapa garis sekitarnya?


aku ingin grep untuk string, tetapi juga menunjukkan lima baris sebelumnya dan lima baris berikut serta garis yang cocok. Bagaimana saya bisa melakukan ini?


2748
2017-08-12 17:55


asal


Jawaban:


Untuk BSD atau GNU  grep Kamu dapat memakai -B num untuk mengatur berapa banyak baris sebelum pertandingan dan -A num untuk jumlah baris setelah pertandingan.

grep -B 3 -A 2 foo README.txt

Jika Anda menginginkan jumlah baris yang sama sebelum dan sesudah Anda dapat menggunakannya -C num.

grep -C 3 foo README.txt

Ini akan menunjukkan 3 baris sebelum dan 3 baris sesudahnya.


3667
2017-08-12 17:57



-A dan -B akan bekerja, juga -C n (untuk n garis konteks), atau adil -n (untuk n garis konteks).


520
2017-08-12 17:59



ack bekerja dengan argumen yang mirip dengan grep, dan menerima -C. Tetapi biasanya lebih baik untuk mencari melalui kode.


66
2017-09-07 11:13



grep astring myfile -A 5 -B 5

Itu akan grep "myfile" untuk "astring", dan menunjukkan 5 baris sebelum dan sesudah setiap pertandingan


32
2017-08-12 17:58



Saya biasanya menggunakan

grep searchstring file -C n # n for number of lines of context up and down

Banyak alat seperti grep juga memiliki file man yang benar-benar hebat. Saya menemukan diri saya mengacu halaman manual grep banyak karena ada banyak hal yang dapat Anda lakukan dengannya.

man grep

Banyak alat GNU juga memiliki halaman info yang mungkin memiliki lebih banyak informasi bermanfaat selain halaman manual.

info grep

16
2017-08-12 18:42



Cari "17655" di "/some/file.txt" yang menampilkan 10 garis konteks sebelum dan sesudah (menggunakan Awk), keluaran didahului dengan nomor baris diikuti oleh titik dua. Gunakan ini di Solaris ketika 'grep' tidak mendukung opsi "- [ACB]".

awk '

/17655/ {
        for (i = (b + 1) % 10; i != b; i = (i + 1) % 10) {
                print before[i]
        }
        print (NR ":" ($0))
        a = 10
}

a-- > 0 {
        print (NR ":" ($0))
}

{
        before[b] = (NR ":" ($0))
        b = (b + 1) % 10
}' /some/file.txt;

8
2017-10-08 00:21



Gunakan grep

$ grep --help | grep -i context
Context control:
  -B, --before-context=NUM  print NUM lines of leading context
  -A, --after-context=NUM   print NUM lines of trailing context
  -C, --context=NUM         print NUM lines of output context
  -NUM                      same as --context=NUM

5
2018-01-12 11:25