我需要一个命令来对某个命令的输出中的某些符号序列进行着色。我想要它,就像它grep
一样。
$ some-command | grep symbol-sequence
但是grep
删除了未包含的行symbol-sequence
。我想要所有原始行都突出显示symbol-sequence
。怎样才能做到呢?
我有alias grep='grep --color=auto'
在~/.bashrc
答案1
您可以使用ANSI 控制字符:
some-command | sed 's/symbol-sequence/^[[0;32;2m symbol-sequence^[[0;0m/'
这些字符^[
不是一个常规字符,^
后面跟着一个常规字符[
。这是一个无法打印的字符。您可以在大多数终端上输入 来获取它Ctrl-v Ctrl-Esc
。第二个[
是真实的[
。
如果您更喜欢完整的 ASCII,这里有一个具有相同效果的复制粘贴版本:
some-command | sed 's/symbol-sequence/\x1B[0;32;2m symbol-sequence\x1B[0;0m/'
您可以更改上述命令中的“32”和“2”来更改输出中的颜色和样式。在任何搜索引擎中查找“ANSI 转义序列”以获取详细信息和颜色代码。