Saya ingin menampilkan semua baris sebelum pertandingan, tidak hanya 10, atau 7, atau 14 misalnya, seperti yang dijelaskan di Bagaimana cara mengambil baris sebelum/sesudah grep menghasilkan bash?.
Bagaimana saya bisa melakukannya? Tidak masalah apakah baris yang cocok disertakan atau tidak.
Misalnya, alih-alih:
... | grep -B 10 -- "foo"
Saya ingin:
... | grep -B -- "foo"
Tapi kode terakhir ini tidak berfungsi.
Jawaban yang Diterima:
-
Termasuk pertandingannya,
sed '/foo/q' fileLebih baik q uit
sedsegera setelah kecocokan ditemukan, jika tidaksedakan terus membaca file dan membuang waktu Anda, yang akan sangat berarti untuk file besar. -
Tidak termasuk pertandingan,
sed -n '/foo/q;p' file-nflag berarti hanya garis yang mencapaipperintah akan dicetak. Sejakfoobaris memicuquit action, itu tidak mencapaipdan karenanya tidak dicetak.-
Jika Anda
sedadalah milik GNU, ini dapat disederhanakan menjadised '/foo/Q' file
-
Referensi
/foo/— Alamatq,p— Perintah yang sering digunakanQ— GNU Sed perintah yang diperluas-n— Opsi baris perintah