Karakterler ^[[37m
ve ANSI çıkış dizilerinin bir^[[0m
parçasıdır (CSI kodları) . Ayrıca bu özelliklere bakın .
GNU’yu kullanma sed
sed 's/\x1b\[[0-9;]*m//g'
\x1b
(veya \x1B
) kaçış özel karakteridir
( sed
alternatifleri desteklemez \e
ve \033
)
\[
kaçış dizisinin ikinci karakteri
[0-9;]*
renk değerleri regex
m
kaçış dizisinin son karakteri
OS MacOS'ta, varsayılan sed
komut , yorumlardaki slm ve vapur25 ile\e
gösterilen özel karakterleri desteklemez . Kullanarak kurabileceğiniz yerine kullanın .gsed
brew install gnu-sed
OP'nin komut satırına örnek: (OP Orijinal Poster anlamına gelir)
perl -e 'use Term::ANSIColor; print color "white"; print "ABC\n"; print color "reset";' |
sed 's/\x1b\[[0-9;]*m//g'
Tom Hale[a-zA-Z]
, sadece m
grafik moduna (renkli) kaçış sırasına özgü harf yerine, tüm diğer kaçış dizilerinin kaldırılmasını önerir . Ancak [a-zA-Z]
çok geniş olabilir ve çok fazla kaldırabilir. Michał Faleński ve Miguel Mota sırasıyla [mGKH]
ve bazılarını kullanarak yalnızca bazı kaçış dizilerini kaldırmayı teklif ediyor [mGKF]
. Britton Kerin , renkleri hata / uyarıdan kaldırmak için K
ek olarak kullanılması gerektiğini de belirtir (yönlendirmeyi unutmayın ).m
gcc
gcc 2>&1 | sed...
sed 's/\x1b\[[0-9;]*m//g' # Remove color sequences only
sed 's/\x1b\[[0-9;]*[a-zA-Z]//g' # Remove all escape sequences
sed 's/\x1b\[[0-9;]*[mGKH]//g' # Remove color and move sequences
sed 's/\x1b\[[0-9;]*[mGKF]//g' # Remove color and move sequences
Last escape
sequence
character Purpose
--------- -------------------------------
m Graphics Rendition Mode (including Color)
G Horizontal cursor move
K Horizontal deletion
H New cursor position
F Move cursor to previous n lines
kullanma perl
sed
Bazı işletim sistemlerinde kurulu sürümü sınırlı olabilir (örneğin, macOS). Komut perl
, daha fazla işletim sistemine kurulması / güncellenmesi genellikle daha kolay olma avantajına sahiptir. Adam Katz kullanımını önerir \e
(Aynı durum \x1b
olarak) PCRE'nin .
Düzenlemek istediğiniz komuta bağlı olarak regex'inizi seçin:
perl -pe 's/\e\[[0-9;]*m//g' # Remove colors only
perl -pe 's/\e\[[0-9;]*[mG]//g'
perl -pe 's/\e\[[0-9;]*[mGKH]//g'
perl -pe 's/\e\[[0-9;]*[a-zA-Z]//g'
perl -pe 's/\e\[[0-9;]*m(?:\e\[K)?//g' # Adam Katz's trick
OP'nin komut satırı ile örnek:
perl -e 'use Term::ANSIColor; print color "white"; print "ABC\n"; print color "reset";' \
| perl -pe 's/\e\[[0-9;]*m//g'
kullanım
Stuart Cardall'un yorumunun işaret ettiği gibi , bu sed
komut satırı e-posta raporunu temizlemek için Ultimate Nginx Bad Bot (1000 yıldız) projesi tarafından kullanılır ;-)
more
veyaless -R
yönlendirebilirsiniz.