突出显示命令输出中的模式(类似于 grep,但不排除行)

突出显示命令输出中的模式(类似于 grep,但不排除行)

我需要一个命令来对某个命令的输出中的某些符号序列进行着色。我想要它,就像它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 转义序列”以获取详细信息和颜色代码。

相关内容