有人可以解释为什么此代码无法按预期工作吗? 我希望它只匹配第一个字符,它与文字字符匹配,但通配符(。)和字符类表现奇怪:
我使用-o只是为了证明事物的匹配方式,它根本不会改变匹配的东西。
$ echo foo | grep -o '^.'
f
o
o
更意想不到的行为:
$ echo foobarbazquux | grep -o '^[foarqux]'
f
o
o
$ echo foobarbazquux | grep -o '^.[^u]'
fo
ob
ar
ba
zq
基本上,行首匹配器(^)在这些情况下的行为不如预期。有没有办法让它表现得更正常?
答案 0 :(得分:5)
答案 1 :(得分:0)
从我的Ubuntu 10.04框中:
marc@panic:~$ echo foo | grep -o '^.'
f
marc@panic:~$ echo foobarbazquux | grep -o '^[foarqux]'
f
marc@panic:~$ echo foobarbazquux | grep -o '^.[^u]'
fo
marc@panic:~$ grep --version
GNU grep 2.5.4
grep会查找一系列环境变量来控制其行为/输出,因此请检查是否有任何设置。很可能你已经设置了'GREP_OPTIONS'。