Colors
將 STDIN 傳遞到 STDOUT 並去除顏色程式碼的程序?
我有一個產生彩色輸出的命令,我想將它通過管道傳輸到一個去除了顏色程式碼的文件中。
cat
除了去除顏色程式碼之外,是否有類似的命令?我打算做這樣的事情:$ command-that-produces-colored-output | stripcolorcodes > outfile
你會認為會有一個實用程序,但我找不到它。但是,這個 Perl 單行程式碼應該可以解決問題:
perl -pe 's/\e\[?.*?[\@-~]//g'
例子:
$ command-that-produces-colored-output | perl -pe 's/\e\[?.*?[\@-~]//g' > outfile
或者,如果您想要一個腳本,您可以另存為
stripcolorcodes
:#! /usr/bin/perl use strict; use warnings; while (<>) { s/\e\[?.*?[\@-~]//g; # Strip ANSI escape codes print; }
如果您只想去除顏色程式碼,而保留任何其他 ANSI 程式碼(如游標移動),請使用
s/\e\[[\d;]*m//g;
而不是我上面使用的替換(刪除所有 ANSI 轉義碼)。