Zom*_*ies 10 grep colors pattern-matching
假设我有一个为终端着色的命令的输出。我想匹配包含黄色的任何行。我怎样才能在 grep 中做到这一点,例如:mycommand -itSomtimesPrintsLinesWithYellowColorCodes | grep -e "?????"
注意:这不是关于为 grep 的输出着色或添加任何颜色。这只是关于如何过滤/匹配进入 grep 的输入的颜色。
Joh*_*024 10
让我们使用tput
为您的终端生成黄色和黑色的颜色代码:
$ yel=$(tput setaf 3)
$ blk=$(tput setaf 0)
Run Code Online (Sandbox Code Playgroud)
让我们来看看黄色代码实际包含的内容:
$ echo -n "$yel" | hexdump -C
00000000 1b 5b 33 33 6d |.[33m|
00000005
Run Code Online (Sandbox Code Playgroud)
现在,我们可以使用grep
搜索黄色代码并打印从黄色代码的开头到下一个代码匹配的字符串,无论该代码是什么:
$ echo "abc ${yel}Yellow${blk} def" | grep -Eo $'\x1b\[33m.[^\x1b]*\x1b\[....'
Yellow
Run Code Online (Sandbox Code Playgroud)
请注意,黄色的颜色代码包括[
哪些grep
被认为是正则表达式活动字符。因此,要匹配文字[
,我们需要将其转义为grep
。为此,我们使用 bash$'...'
定义带有 [` 转义字符的颜色代码。
在您的终端上产生黄色的代码可能不止一个。您将需要检查正在使用的任何命令的输出,以确定正在使用哪些代码并将它们包含在您的grep
命令中。
归档时间: |
|
查看次数: |
2310 次 |
最近记录: |