使用sed时保留转义序列和颜色

时间:2015-12-23 21:07:51

标签: bash sed ansi-escape

我输出了一个测试记者,它返回了很好的彩色结果,以及我想摆脱的杂项垃圾。我尝试使用sed通过:

karma start tests/karma.conf.js | sed 's|var.*browserify||'

...除去垃圾,但也会杀死彩色结果。我该如何保留它们?

以下是sed之前的原始输出示例:

^[[1A^[[2KERROR: 'Unhandled promise rejection' /var/folders/xs/wmmjbz4s6mdgcqynwn46qtmr0000gn/T/799ac09c665c85beb20f6d99be27c1cf.browserify?c65c8d7afc187ee2ed8307a171bc8e1511bfb40b:91625:48)

2 个答案:

答案 0 :(得分:1)

.*将匹配所有内容,包括颜色代码。

如果您不想匹配它们,请使用更具体的正则表达式,例如一个角色范围。

答案 1 :(得分:1)

对于给定的例子,

/var/folders/xs/wmmjbz4s6mdgcqynwn46qtmr0000gn/T/799ac09c665c85beb20f6d99be27c1cf.browserify

更具体的模式可能是其中之一,使用字符类:

sed 's|var[^[:cntrl:]]*browserify||'
sed 's|var[[:alnum:]./]*browserify||'

我会使用后者,因为它可以消除跳过完整路径名的可能性(如果在一行上给出不止一个)。