Saya ingin grep
string, tetapi juga menunjukkan lima baris sebelumnya dan lima baris berikut serta garis yang cocok. Bagaimana saya bisa melakukan ini?
search
logging
grep
command-line-interface
Mark Harrison
sumber
sumber
man grep | grep -C 1 context
:)man grep | grep -C 1 "\-C"
;)Jawaban:
Untuk BSD atau GNU
grep
Anda dapat menggunakan-B num
untuk mengatur berapa baris sebelum pertandingan dan-A num
untuk jumlah baris setelah pertandingan.Jika Anda ingin jumlah baris yang sama sebelum dan sesudah Anda dapat menggunakan
-C num
.Ini akan menampilkan 3 baris sebelum dan 3 baris setelah.
sumber
-A
dan-B
akan bekerja, seperti yang akan-C n
(untukn
garis konteks), atau adil-n
(untukn
garis konteks ... selama n adalah 1 hingga 9).sumber
-n
format dan ternyata hanya berfungsi sampai9
. Untuk15
itu mengembalikan 5 baris-A
,-B
atau-C
). Biasanya, specifier opsi diikuti oleh nilai (-o a.out
untuk menentukan file output di GCC), tetapi juga dapat berfungsi sebagai saklar / bendera sederhana (-g
untuk mengaktifkan info debug di GCC). Namun spasi di antara opsi bersifat opsional, jadi untuk opsi tanpa nilai, dimungkinkan untuk menggabungkannya (-ABC
), yang berarti-15
ditafsirkan-1 -5
(dua opsi terpisah) dan-5
mengabaikannya-1
.ack bekerja dengan argumen yang sama dengan grep, dan accept
-C
. Tetapi biasanya lebih baik untuk mencari melalui kode.sumber
grep
, tidak yakin menggunakannya untuk "beriklan"ack
(yang merupakan alat yang hebat, memang) adalah ide yang bagus ...Itu akan menangkap "myfile" untuk "astring", dan menunjukkan 5 baris sebelum dan sesudah setiap pertandingan
sumber
Saya biasanya menggunakan
Banyak alat seperti grep juga memiliki file man yang sangat hebat. Saya menemukan diri saya banyak merujuk ke halaman manual grep karena ada banyak hal yang dapat Anda lakukan dengannya.
Banyak alat GNU juga memiliki halaman info yang mungkin memiliki informasi yang lebih berguna selain halaman manual.
sumber
Gunakan grep
sumber
Cari "17655" di "/some/file.txt" menampilkan 10 baris konteks sebelum dan sesudah (menggunakan Awk), output diawali dengan nomor baris diikuti oleh titik dua. Gunakan ini pada Solaris ketika 'grep' tidak mendukung opsi "- [ACB]".
sumber
ripgrep
Jika Anda peduli dengan kinerja, gunakan
ripgrep
sintaksis yang mirip dengangrep
, misalnyaAda juga parameter seperti
-A
/--after-context
dan-B
/--before-context
.Alat ini dibangun di atas mesin regex Rust yang membuatnya sangat efisien pada data besar.
sumber
Ini adalah solusi @ Tech di
awk
Catatan: Ganti
a
danb
variabel dengan jumlah baris sebelum dan sesudah.Ini sangat berguna untuk sistem yang tidak mendukung parameter grep
-A
,-B
dan-C
.sumber
-5
membuat Anda5
baris di atas dan di bawah pertandingan 'thestring' setara dengan-C 5
atau-A 5 -B 5
.sumber
Grep memiliki opsi bernama
Context Line Control
, Anda dapat menggunakan--context
di dalamnya, cukup,atau
Sebaiknya lakukan triknya
sumber
Saya gunakan untuk melakukan cara yang kompak
Itu setara dengan
sumber
Jika Anda sering mencari kode, AG pencari perak jauh lebih efisien (lebih cepat) daripada grep.
Anda menunjukkan garis konteks dengan menggunakan opsi -C.
Misalnya:
sumber