Yanıtlar:
grepKomutu bir kabul --color=alwayskullanabilirsiniz, böylece seçeneği
grep 'keyword1' file.log --color=always | grep 'keyword2'
Gertvdijk belirttiği gibi , bu komut verimsiz olabilir, ancak hem keyword1 hem de keyword2 içeren tüm satırları arayacaktır. Bunları farklı renklerde vurgulamak isterseniz,
grep 'keyword1' file.log --color=always | GREP_COLORS="mt=01;34" grep --color=always 'keyword2'
anahtar kelime2'yi mavi renkte vurgulayacaktır. Bu mtbölüm, grepbu CSI kodunu kullanarak eşleşen metni vurgulayacak ve 01;34"normal arka planda koyu mavi ön plan" anlamına gelecektir .
grep -R --color=always keyword1 . | grep keyword2işe yaramalı . Çıkışı tekrar mı yönlendiriyorsunuz (ikincisini grepiçine çekmek gibi less -R)? Öyleyse --color=always, ikincisine de eklemeniz gerekir .
--color=autoiçin grep, hemen sonra ikinci için bir ihtiyaç olacaktır 'keyword2'.
--color=always, çünkü cevabı lessya da başka bir şeye bağlamak isteyebilirsiniz .
Başka bir örneğe yöneltmek yerine gerçek düzenli ifadeleri deneyin grep, örn:
grep -E "\<foo\>.*\<bar\>" file
Bu, maalesef, bu anahtar kelimelerin yalnızca bu sırayla eşleştiği eşleşen satırlarla sınırlıdır. Her neyse, grepsorunuzun kullanımı oldukça verimsiz ve bundan kaçınmalısınız. @DanielH cevabı muhtemelen dava için oldukça fazla daha basittir.
Anahtar kelimelerin 'veya' eşleşmesi için bunu düzenli olarak kullanıyorum:
grep -E "(foo|bar)" file
foo.*bar|bar.*foo, ya da bu durumda (bu muhtemelen anahtar kelimeler için standart bir sipariş olurdu bir günlük dosyası gibi görünüyor) için gerekli olup olmadığını bilmiyorum . Sizinkini güncellemeden önce cevabımı ekledim, ancak zincirlerin grepgerçekten gerekli olduğu bir durumda (veya başka herhangi bir zaman renkli çıkışın terminale gönderilmemesi gerektiği gibi grep | less -R) saklayacağım .