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' file
Lebih baik q uit
sed
segera setelah kecocokan ditemukan, jika tidaksed
akan terus membaca file dan membuang waktu Anda, yang akan sangat berarti untuk file besar. -
Tidak termasuk pertandingan,
sed -n '/foo/q;p' file
-n
flag berarti hanya garis yang mencapaip
perintah akan dicetak. Sejakfoo
baris memicuq
uit action, itu tidak mencapaip
dan karenanya tidak dicetak.-
Jika Anda
sed
adalah 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