Yanıtlar:
grep
Komutu bir kabul --color=always
kullanabilirsiniz, 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 mt
bölüm, grep
bu 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 keyword2
işe yaramalı . Çıkışı tekrar mı yönlendiriyorsunuz (ikincisini grep
içine çekmek gibi less -R
)? Öyleyse --color=always
, ikincisine de eklemeniz gerekir .
--color=auto
için grep
, hemen sonra ikinci için bir ihtiyaç olacaktır 'keyword2'
.
--color=always
, çünkü cevabı less
ya 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, grep
sorunuzun 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 grep
gerç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 .