我正在使用 Ubuntu 20.04.4 和 grep 版本 3.4。
我发现一些我无法解释的东西,请帮助。
[/dev/pts/0(xterm-256color) 2023-04-04 10:28:01 ERR:0]
[chj @Ub20cppdev ~/test]
$ cat input3l.csv
"C:\Program Files (x86)\Comodo\",223743576,223920128
"C:\Program Files (x86)\Comodo\Dragon\",223743576,223920128
"C:\Program Files (x86)\Comodo\Dragon\dragon_s.dll",127097864,127098880
[/dev/pts/0(xterm-256color) 2023-04-04 10:28:07 ERR:0]
[chj @Ub20cppdev ~/test]
$ cat input3l.csv | egrep '(".+\\"),'
"C:\Program Files (x86)\Comodo\",223743576,223920128
"C:\Program Files (x86)\Comodo\Dragon\",223743576,223920128
[/dev/pts/0(xterm-256color) 2023-04-04 10:28:19 ERR:0]
[chj @Ub20cppdev ~/test]
$ cat input3l.csv | egrep '(".+\\"),.+'
[/dev/pts/0(xterm-256color) 2023-04-04 10:28:33 ERR:0]
[chj @Ub20cppdev ~/test]
$ cat input3l.csv | egrep '(".+\\"),.+' > egrep1.txt
[/dev/pts/0(xterm-256color) 2023-04-04 10:28:43 ERR:0]
[chj @Ub20cppdev ~/test]
$ cat egrep1.txt
"C:\Program Files (x86)\Comodo\",223743576,223920128
"C:\Program Files (x86)\Comodo\Dragon\",223743576,223920128
您所看到的几乎可以肯定是因为 grep 输出中的颜色代码与输入中的 Windows 样式 (CRLF) 行结尾之间的交互。重定向输出时看不到相同的内容,因为默认的 egrep 别名
仅在写入终端时为输出着色。比较例如:
相对
您可以看到尾随
.*
(或者在您的情况下,带有egrep
/grep -E
尾随.+
)正在捕获回车符并在结束 ANSI 颜色序列之前\r
发出它,导致它改写匹配的文本。\033[m\033[K
foo
另请参阅在卷曲请求后管道 grep 时,正则表达式工作非常奇怪