t.txt 文件内容为:
<title><{$action|default:""}>-XX</title>
执行命令:
grep -n --color -E 'XX' t.txt
可以得到正确的结果
执行命令
grep -n --color -E '.*XX.*' t.txt
会在终端显示一个空行
执行命令
grep -n -E '.*XX.*' t.txt
也能得到正确的结果(对于匹配到的内容不着色)
环境: osx iterm2
以上提到的所有命令在 centos7 中完全正常
这个可能是啥原因?
1
Tony8Finet 2017-03-29 21:46:26 +08:00
我这试过正常显示 (Max OS 10.9.5 + iTerm2):
/usr/bin/grep -n --color -E '.*XX.*' t.txt 1:<title><{$action|default:""}>-XX</title> (整行为红色,除了 "1:" 是标示第 1 行外) 先检查一下是否 grep 已在 alias 中增添了什么,或是用 /usr/bin/grep 再试一次。 |
2
silenceeeee OP |
3
silenceeeee OP |
4
silenceeeee OP @Tony8Finet 不知道咋贴图了 你点开我发的图片链接看下
|
5
Tony8Finet 2017-03-31 00:54:40 +08:00
r#4 @silenceeeee 依照你图片所示做了一次,确定是 CRLF line terminator 的影响。若将 CRLF 改成 LF 则可以正确看到有颜色的输出结果。
用 grep -n --color -E '.*XX.*' t.txt > tmp-out ,可以看到 tmp-out 內容确实有输出,不知算不算是 grep --color 的 bug 。 我在 CentOS 7 下试的结果一样,只要是 CRLF 的就会看不到输出结果。 |
6
silenceeeee OP @Tony8Finet j 是的。我也发现 > tmp-out 这样是有结果的 改天没事看看 grep 源代码吗 -_-
|