Saya memiliki perintah yang menghasilkan keluaran berwarna, dan saya ingin menyalurkannya ke file dengan kode warna dilucuti. Apakah ada perintah yang berfungsi seperti cat
kecuali bahwa itu strip kode warna? Saya berencana melakukan sesuatu seperti ini:
$ command-that-produces-colored-output | stripcolorcodes > outfile
isatty(stdin)
sebelum melakukannya. Pikiran untuk berbagi program apa itu?cat
- tes cepat saya berlarigrep --color=auto myusername /etc/passwd
memberi saya nama pengguna saya merah dengan teks putih elsewhree.grep --color=auto myusername /etc/passwd | cat
memberi saya teks putih polosgrep --color=auto
menghindari menghasilkan keluaran berwarna ketika keluaran standar bukan terminal. Saya berbicara tentang perintah yang tanpa syarat menampilkan kode warna. (Seperti yang ditunjukkan alex di atas, perilaku semacam itu bisa dibilang bug, tetapi kadang-kadang kita perlu bekerja dengan perangkat lunak yang tidak sempurna sehingga kita tidak dapat dengan mudah memperbaiki diri, dan itulah pertanyaannya.)Jawaban:
Anda akan berpikir akan ada utilitas untuk itu, tetapi saya tidak dapat menemukannya. Namun, Perl one-liner ini harus melakukan trik:
Contoh:
Atau, jika Anda menginginkan skrip, Anda dapat menyimpannya sebagai
stripcolorcodes
:Jika Anda ingin menghapus hanya kode warna, dan biarkan kode ANSI lainnya (seperti gerakan kursor), gunakan
bukannya substitusi yang saya gunakan di atas (yang menghapus semua kode pelarian ANSI).
sumber
Term::ANSIColor
. Tolong akui sumber Anda!Hapus kode warna (karakter khusus) dengan sed GNU
Atau
Strip urutan melarikan diri ANSI di Python
Instal paket colorama python (
pip install colorama
). Dimasukkan ke dalamstripcolorcodes
:Lari
chmod +x stripcolorcodes
.sumber
sed
sangat mengesankan :)Jika Anda dapat menginstal modul Term :: ANSIColor , skrip perl ini berfungsi:
sumber
perl -mTerm::ANSIColor=colorstrip -n -e 'print colorstrip $_'
Jika sistem Anda memiliki akses ke NodeJS, Anda dapat menginstal paket Node berikut
strip-ansi-cli
,.Anda kemudian dapat menjalankan perintah Anda seperti ini:
sumber
Perintah sed ini melakukannya untuk saya:
Contoh:
sumber
sed
.Anda dapat menggunakan ac untuk ini. Itu harus lebih cepat daripada apa pun yang tercantum di atas (meskipun
perl
dansed
harus layak). Ini sebuah contoh:Sebagai penafian: fungsi pemfilteran warna ditulis oleh saya.
sumber
ac
Program tampaknya berada di sini: hub.darcs.net/vmchale/fastcat... dan jika perlu,
(dnf, ...) install ansifilter
sumber