我已经签出了很多环节上如何grep
个别转义字符或文本字符串,但我不能让他们结合起来,找到后台红色ANSI转义序列^[41m
,即使键入^[
既是Ctrl+V+Ctrl+[和两个文字字符^+[和使用-E
和-F
标志。
我试图找到的原始字节hexdump
是:
1b 5b 33 37 6d 1b 5b 34 31 6d 30 2e 30 30 25
Run Code Online (Sandbox Code Playgroud)
这对应于WHITE FOREGROUND
RED BACKGROUND
0.00%
. 我正在使用Python 的 colorama 包和生成这些代码Fore.WHITE+Back.RED
,以防万一有人好奇。
那么,我缺少的秘密是什么?
基于这个关于 SO 的问题,我发现:
echo "a']" | grep -E "\a"
Run Code Online (Sandbox Code Playgroud)
匹配正常。
echo "a']" | grep -E "\]"
Run Code Online (Sandbox Code Playgroud)
匹配正常。
但:
echo "a']" | grep -E "\'"
Run Code Online (Sandbox Code Playgroud)
不匹配。我找不到任何文档来描述如何准确grep -E
处理转义单引号。我在 Ubuntu 14.04 上使用 GNU grep 2.16。
注意:
echo "a']" | grep -E "'"
Run Code Online (Sandbox Code Playgroud)
匹配 OK,但我很好奇如何grep -E
解释\'
.
更新:
我刚刚在 Cygwin 2.6.1 和 grep 2.27 上尝试过这个,我可以重现。使用grep --colour -Eo
也许会给出更清晰的 OK/Fail 结果?