grep --ignore-case --only

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)

根据手册页:

   -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.
Run Code Online (Sandbox Code Playgroud)

这是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.


Fel*_*Yan 9

它应该是您的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)

  • 看起来我安装了 Red Hat 2.5.1-55,所以它是在@KennyTM 报告的错误修复之后。 (2认同)