Jika saya menggunakan dua grepperintah 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 grepperintah 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.
grepmendeteksi 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, 2013dan foo.
grep --color=always ID file | grep 2013 | grep foo
akan mewarnai IDdan 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"
.bashrcdll Anda , tetapi jangan kecuali Anda karena alasan tertentu benar-benar memahami implikasi dan masih ingin melakukannya. Dalam banyak hal akan pecah grepkarena fakta yang disebutkan di atas 1 .
Tambahkan aliasjika Anda sering menggunakannya.
alias cgrep='grep --color=always'
GREP_OPTIONSdan --color mengambil tiga pilihan : never, autodan always. Dua yang pertama harus menjadi satu-satunya yang dipertimbangkan GREP_OPTIONS.
Anda juga dapat memeriksa GREP_COLORSdi manhalaman atau di gnu grep .
export GREP_OPTIONS="--color=always"di .bashrc menjadikan opsi sebagai default untuk greps apa pun, dan Anda telah berhasil melakukannya!
lsdan gnu coreutils.