perl – 在Unix中删除ANSI颜色转义的最佳方法
发布时间:2020-12-15 23:29:41 所属栏目:大数据 来源:网络整理
导读:我有一个perl progaram它的打印输出颜色.如果我重新扫描文件中的输出并在vi中打开它,我会看到颜色特殊字符. 这样的事情. ^[[31;43mAnd this is red on_yellow too^[[0m 从输出文件中删除此颜色字符的最佳方法是什么? 谢谢 更新: 我尝试了正则表达式.这个对
我有一个perl progaram它的打印输出颜色.如果我重新扫描文件中的输出并在vi中打开它,我会看到颜色特殊字符.
这样的事情. ^[[31;43mAnd this is red on_yellow too^[[0m 从输出文件中删除此颜色字符的最佳方法是什么? 谢谢 更新: 我尝试了正则表达式.这个对我有用: cat -v a|head ^[[30;41mThis is black on_red^[[0m ^[[30;41mAnd this is black on_red too^[[0m ^[[30;42mThis is black on_green^[[0m ^[[30;42mAnd this is black on_green too^[[0m ^[[30;43mThis is black on_yellow^[[0m ^[[30;43mAnd this is black on_yellow too^[[0m ^[[30;44mThis is black on_blue^[[0m ^[[30;44mAnd this is black on_blue too^[[0m ^[[30;45mThis is black on_magenta^[[0m ^[[30;45mAnd this is black on_magenta too^[[0m $cat -v a|head|perl -lane 's/^[[d+(;d+)*m//g; print' This is black on_red And this is black on_red too This is black on_green And this is black on_green too This is black on_yellow And this is black on_yellow too This is black on_blue And this is black on_blue too This is black on_magenta And this is black on_magenta too 解决方法
巧合的是我只需要解决这个问题,这就是我提出的正则表达式:
while (<>) { s/e[[d;]*[a-zA-Z]//g; print; } 我只是通过检查一些示例输出(特别是grep –color = always …的输出)得出这个,所以它可能无法覆盖你期望的所有转义. 根据this site的信息,最后一个字符类可能会从[a-zA-Z]缩短到[mK]. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |