我认为这可能很容易,但不是很多
在我的情况下,我想基于定界符为命令的输出着色
apt-show-versions -u
,并希望根据冒号分隔符或单词“ to”为包装的名称着色。似乎要解析器而不是过滤器。
在Linux和PuTTY上使用color xterm
答案 0 :(得分:1)
Others have对类似功能感兴趣,建议您检查此处提到的工具(grc / grcat)。
但是,您也许可以摆脱sed-magic的困扰。我不确定要精确着色的颜色,也不知道apt-show-versions的输出是什么样,但这会为冒号和单词“ to”之前的所有内容着色:
cat << EOF | sed -e "s/^[^:]*/\x1b[31m&\x1b[0m/g" | sed -e "s/to/\x1b[31m&\x1b[0m/g"
foo: 1 to 2
bar: 3 to 4
quux: 5 to 6
EOF
您可以将其粘贴到终端中,然后查看它是否在寻找。本质上,它搜索正则表达式的出现并用ANSI颜色代码将其包围:
s/X/Y&Y/g
:在整个输入(g
标志)中或者在引用man sed
的情况下,用Y包围X,或者用引号s/regexp/replacement/
Attempt to match regexp against the pattern space. If success‐
ful, replace that portion matched with replacement. The
replacement may contain the special character & to refer to that
portion of the pattern space which matched, and the special
escapes \1 through \9 to refer to the corresponding matching
sub-expressions in the regexp.
:
^[^:]*
:
:从行首开始,匹配所有内容,直到遇到\x1b
[31m
:十六进制27,一个转义序列(see here for more!)[0m
:红色的ANSI颜色代码sed
:“重置为正常输出”的ANSI颜色代码如果有什么话,这篇帖子告诉我&
捕获了tcp *:http
中的匹配项;-)希望您也能获得一些见识!