Gunakan ack. Lihat --passthru
-nya opsi di sini:ack. Ini memiliki manfaat tambahan yang memungkinkan ekspresi reguler penuh perl.
$ ack --passthru 'pattern1' file_name
$ command_here | ack --passthru 'pattern1'
Anda juga dapat melakukannya menggunakan grep seperti ini:
$ grep --color -E '^|pattern1|pattern2' file_name
$ command_here | grep --color -E '^|pattern1|pattern2'
Ini akan mencocokkan semua garis dan menyorot polanya. ^
cocok dengan setiap awal baris, tetapi tidak akan dicetak/disorot karena itu bukan karakter.
(Perhatikan bahwa sebagian besar penyiapan akan menggunakan --color secara default. Anda mungkin tidak memerlukan tanda itu).
Anda dapat memastikan bahwa semua garis cocok tetapi tidak ada yang disorot pada kecocokan yang tidak relevan
egrep --color 'apple|' test.txt
Catatan:
egrep
bisa dieja jugagrep -E
--color
biasanya default di sebagian besar distribusi- beberapa varian grep akan "mengoptimalkan" kecocokan kosong, jadi Anda mungkin ingin menggunakan "apple|$" sebagai gantinya (lihat:https://stackoverflow.com/a/13979036/939457)
EDIT:
Ini berfungsi dengan grep:
OS X Mountain Liongrep --color -E 'pattern1|pattern2|$'
Ini lebih baik daripada '^|pattern1|pattern2'
karena ^
bagian dari pergantian cocok di awal baris sedangkan $
pertandingan di akhir baris. Beberapa mesin ekspresi reguler tidak akan menyorot pattern1
atau pattern2
karena ^
sudah cocok dan mesinnya bersemangat .
Hal serupa terjadi pada 'pattern1|pattern2|'
karena mesin regex memperhatikan pergantian kosong di akhir string pola cocok dengan awal string subjek.
[1]: http://www.regular-expressions.info/engine.html
EDIT PERTAMA:
Saya akhirnya menggunakan perl:
perl -pe 's:pattern:\033[31;1m$&\033[30;0m:g'
Ini mengasumsikan Anda memiliki terminal yang kompatibel dengan ANSI.
JAWABAN ASLI:
Jika Anda terjebak dengan grep
yang aneh , ini mungkin berhasil:
grep -E --color=always -A500 -B500 'pattern1|pattern2' | grep -v '^--'
Sesuaikan angka untuk mendapatkan semua garis yang Anda inginkan.
grep
kedua hapus saja --
asing baris yang disisipkan oleh grep
bergaya BSD di Mac OS X Mountain Lion, bahkan saat konteks kecocokan berurutan tumpang tindih.
Saya pikir grep GNU menghilangkan --
baris ketika konteks tumpang tindih, tapi sudah lama jadi mungkin saya salah ingat.