Jika saya menggunakan dua grep
perintah berurutan , misalnya:
echo "foo bar" | grep foo | grep bar
Maka pola pertama ("foo") tidak disorot. Bahkan, tampaknya grep menghapus kode warna dari inputnya. Apakah ada cara untuk mencegah hal ini?
Jika saya menggunakan dua grep
perintah berurutan , misalnya:
echo "foo bar" | grep foo | grep bar
Maka pola pertama ("foo") tidak disorot. Bahkan, tampaknya grep menghapus kode warna dari inputnya. Apakah ada cara untuk mencegah hal ini?
Jawaban:
Gunakan --color=always
.
grep
mendeteksi apakah output ke pipa (atau file). Anda paling tidak pernah menginginkan warna saat output diarsipkan - karena itu adalah sekuens melarikan diri untuk terminal. Khas:
foo ^[[01;31m^[[Kbar^[[m^[[K
dari eg:
grep pattern file > result
Untuk mengganti penggunaan --color=always
.
grep --color=always pattern file | ...
Contoh:
Memiliki file:
ID=111;Year=2013;foo=bar
ID=222;Year=2013;foo=baz
Kemudian
grep --color=always ID file | grep --color=always 2013 | grep foo
akan berwarna ID
, 2013
dan foo
.
grep --color=always ID file | grep 2013 | grep foo
akan mewarnai ID
dan foo
, tetapi tidak 2013
.
1 Penting: Anda juga harus ingat bahwa kekacauan yang ditambahkandari warna diteruskan ke perintah berikutnya dalam rantai. Setelah ID berwarna, Anda tidak bisa (dengan mudah), cocok dengan misID=111
.
Pada beberapa kesempatan seseorang mungkin ingin warna terminal dalam file . Coba misalnya
grep --color=always foo file > result
cat result
Padahal file yang dihasilkan akan memiliki portabilitas yang sangat terbatas.
Pewarnaan itu sendiri juga merupakan perpanjangan.
Seperti disebutkan oleh @slm yang baik , Anda dapat menambahkan:
export GREP_OPTIONS="--color=always"
.bashrc
dll Anda , tetapi jangan kecuali Anda karena alasan tertentu benar-benar memahami implikasi dan masih ingin melakukannya. Dalam banyak hal akan pecah grep
karena fakta yang disebutkan di atas 1 .
Tambahkan alias
jika Anda sering menggunakannya.
alias cgrep='grep --color=always'
GREP_OPTIONS
dan --color
mengambil tiga pilihan : never
, auto
dan always
. Dua yang pertama harus menjadi satu-satunya yang dipertimbangkan GREP_OPTIONS
.
Anda juga dapat memeriksa GREP_COLORS
di man
halaman atau di gnu grep .
export GREP_OPTIONS="--color=always"
di .bashrc menjadikan opsi sebagai default untuk greps apa pun, dan Anda telah berhasil melakukannya!
ls
dan gnu coreutils.