Hai Saya sangat baru dalam pemrograman bash. Saya ingin cara untuk mencari dalam Teks yang diberikan. Untuk itu saya menggunakan grep
fungsi:
grep -i "my_regex"
Itu bekerja. Namun mengingat data
seperti ini:
This is the test data
This is the error data as follows
. . .
. . . .
. . . . . .
. . . . . . . . .
Error data ends
Setelah saya menemukan kata error
(menggunakan grep -i error data
), saya ingin menemukan 10 baris yang mengikuti kata error
. Jadi output saya harus:
. . .
. . . .
. . . . . .
. . . . . . . . .
Error data ends
Apakah ada cara untuk melakukannya?
error
.Jawaban:
Anda dapat menggunakan
-B
dan-A
untuk mencetak garis sebelum dan sesudah pertandingan.Akan mencetak 10 baris sebelum pertandingan, termasuk garis yang cocok itu sendiri.
sumber
test=$(grep -i -B 10 'error' data)
, dan mencetaknya menggunakanecho $test
, saya mendapatkan garis lurus panjang sebagai output.echo "$test"
daripadaecho $test
-C 10
akan mencetak 10 baris sebelum DAN setelah dalam satu gerakan!Ini mencetak 10 baris konteks trailing setelah garis yang cocok
Jika Anda perlu mencetak 10 baris konteks terkemuka sebelum mencocokkan garis,
Dan jika Anda perlu mencetak 10 baris konteks output terkemuka dan tertinggal.
Contoh
Grep normal
Dapatkan garis pencocokan yang tepat dan 2 baris setelahnya
Dapatkan garis dan 2 pencocokan yang tepat sebelumnya
Dapatkan garis dan 2 garis yang cocok sebelum dan sesudah
Referensi: manpage grep
sumber
Cara untuk melakukan ini adalah di dekat bagian atas halaman manual
sumber
Coba ini:
-A 10 berarti, cetak sepuluh baris setelah pertandingan ke "my_regex"
sumber