Rya*_*son 67 colors pipe filter
我有一个生成彩色输出的命令,我想将它通过管道传输到一个文件中,并去掉颜色代码。cat
除了去除颜色代码之外,是否有类似的命令?我打算做这样的事情:
$ command-that-produces-colored-output | stripcolorcodes > outfile
Run Code Online (Sandbox Code Playgroud)
cjm*_*cjm 62
你会认为会有一个实用程序,但我找不到它。但是,这个 Perl one-liner 应该可以解决问题:
perl -pe 's/\e\[?.*?[\@-~]//g'
Run Code Online (Sandbox Code Playgroud)
例子:
$ command-that-produces-colored-output | perl -pe 's/\e\[?.*?[\@-~]//g' > outfile
Run Code Online (Sandbox Code Playgroud)
或者,如果你想要一个脚本,你可以另存为stripcolorcodes
:
#! /usr/bin/perl
use strict;
use warnings;
while (<>) {
s/\e\[?.*?[\@-~]//g; # Strip ANSI escape codes
print;
}
Run Code Online (Sandbox Code Playgroud)
如果您想要去除仅颜色代码,并留下其他任何ANSI代码(如光标移动)单独使用
s/\e\[[\d;]*m//g;
Run Code Online (Sandbox Code Playgroud)
而不是我上面使用的替换(删除了所有 ANSI 转义码)。
jfs*_*jfs 32
sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"
Run Code Online (Sandbox Code Playgroud)
或者
安装colorama python 包 ( pip install colorama
)。放入stripcolorcodes
:
#!/usr/bin/env python
import colorama, fileinput, sys;
colorama.init(strip=True);
for line in fileinput.input():
sys.stdout.write(line)
Run Code Online (Sandbox Code Playgroud)
运行chmod +x stripcolorcodes
。
Rya*_*son 22
如果你可以安装Term::ANSIColor模块,这个 perl 脚本就可以工作:
#!/usr/bin/env perl
use Term::ANSIColor qw(colorstrip);
print colorstrip $_ while <>;
Run Code Online (Sandbox Code Playgroud)
小智 11
如果您的系统可以访问NodeJS,您可以安装以下 Node 包strip-ansi-cli
.
$ npm install -g strip-ansi-cli
Run Code Online (Sandbox Code Playgroud)
然后你可以像这样运行你的命令:
$ command-that-produces-colored-output | strip-ansi > outfile
Run Code Online (Sandbox Code Playgroud)