sch*_*ten 69 regex unix bash grep gnu
使用--ignore-case和--only-match选项时grep失败.例:
$ echo "abc" | grep -io abc
abc
$ echo "ABC" | grep -io abc
$
Run Code Online (Sandbox Code Playgroud)
但
$ echo "abc" | grep -i abc
abc
$ echo "ABC" | grep -i abc
ABC
Run Code Online (Sandbox Code Playgroud)
根据手册页:
Run Code Online (Sandbox Code Playgroud)-o, --only-matching Show only the part of a matching line that matches PATTERN. -i, --ignore-case Ignore case distinctions in both the PATTERN and the input files.
这是grep的错误还是我没有得到地图页面?
我使用的是Mac OS X 10.6.8和
$ grep --version
grep (GNU grep) 2.5.1
Run Code Online (Sandbox Code Playgroud)
找到此链接:http://lists.gnu.org/archive/html/bug-gnu-utils/2003-11/msg00040.html
当然可以使用类似的解决方法grep -o [aA][bB][cC],但这似乎不是一个好的选择.
ken*_*ytm 45
这是最初的2.5.1上的一个已知 错误,并且已根据错误报告在2007年初修复(Redhat 2.5.1-5).不幸的是,即使在Mac OS X 10.7.2上,Apple仍然使用2.5.1 .
您可以通过Homebrew(3.0)或MacPorts(2.26)或fink(3.0-1)获得更新版本.
编辑:显然它已在OS X 10.11(或更早)上修复,即使报告的grep版本仍为2.5.1.
它应该是您的grep版本中的问题.
您的测试用例在我的计算机上正常运行:
$ echo "abc" | grep -io abc
abc
$ echo "ABC" | grep -io abc
ABC
Run Code Online (Sandbox Code Playgroud)
我的版本是:
$ grep --version
grep (GNU grep) 2.10
Run Code Online (Sandbox Code Playgroud)