Renk kodlarını grep girişi ile nasıl saklayabilirim?


15

İki ardışık grepkomut kullanırsanız, örneğin:

echo "foo bar" | grep foo | grep bar

Sonra ilk desen ("foo") vurgulanmaz. Aslında, grep'in renk kodlarını girişinden kaldırdığı görülüyor. Bunu önlemenin bir yolu var mı?


Aynı cevaba sahip başka bir soru: renkli çıktıyı bash fonksiyonu içindeki bir grep'e nasıl geri yükleyebilirsiniz?
— Camille Goudeseune

Yanıtlar:


23

Kullanın --color=always.

grepçıktının bir boruya (veya dosyaya) olup olmadığını tespit eder. Çıktı dosyalanırken en çok renk istemezsiniz, çünkü bu terminal için kaçış dizisidir. Tipik:

foo ^[[01;31m^[[Kbar^[[m^[[K

örneğin:

grep pattern file > result

Geçersiz kılmak için --color=always.

grep --color=always pattern file | ...

Misal:

Dosyaya sahip olmak:

ID=111;Year=2013;foo=bar
ID=222;Year=2013;foo=baz

Sonra

grep --color=always ID file | grep --color=always 2013 | grep foo

renk olur ID, 2013ve foo.

grep --color=always ID file | grep 2013 | grep foo

renk olur IDve fooancak 2013.

1 Önemli: Renklerdeneklenen dağınıklığın zincirdeki bir sonraki komuta aktarıldığınıda hatırlamanız gerekir. Kimlik renklendirildikten sonra (kolaylıkla) eşleşemezsiniz, örnID=111.


Bazı durumlarda belki de terminal renklerinin dosyada olmasını istersiniz . Örneğin deneyin

 grep --color=always foo file > result
 cat result

Sonuçta elde edilen dosya taşınabilirliği çok sınırlı olsa da.


Renklendirmenin kendisi de bir eklentidir.


Good @slm tarafından belirtildiği gibi şunları ekleyebilirsiniz:

export GREP_OPTIONS="--color=always"

sizin için .bashrcvs, ama yok sürece nedense gerçekten etkilerini anlamak ve hala yapmak istiyorum için. grepYukarıda belirtilen gerçek nedeniyle birçok yönden kırılacaktır 1 .

aliasSık kullanıyorsanız bir ekleyin .

 alias cgrep='grep --color=always'

GREP_OPTIONSve --color üç seçenek almak : never, autove always. İlki düşünülenler için ilk ikisi olmalıdır GREP_OPTIONS.

Ayrıca kontrol edebilir GREP_COLORSiçinde mansayfaları veya en gnu grep .


Bu yöntemle ilgili ek ayrıntılar / dezavantajlar burada: stackoverflow.com/questions/867877/…
— slm

1
Bunu yanıta da export GREP_OPTIONS="--color=always"ekleyin : .bashrc'de seçenekleri herhangi bir grep için varsayılan yapar ve hemen hemen çivilenmişsinizdir!
— slm

Bu Süper Uuser Soru-Cevap bölümünde iyi şeyler: superuser.com/questions/36022/…
— slm

"grep, çıktının bir boruya olup olmadığını algılar" - aha! Bu anahtar, grep bir borunun parçasıysa renklendirmiyor. Bu tür şeylere karşı bir ikame ilkesi olmalıdır: - /
— Chris2048

@ Chris2048: Bu, terminale renk basan çoğu araç için standarttır. Biraz daha ayrıntı bulabilirsiniz bundan algılanan şekline, Ve bu OSX yerli üzerinde örneğin ls ve renkler ile bazı sorunları gösterirls ve gnu coreutils.
— Runium
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.