同时使用--ignore-case和--only-match选项时,grep会失败。示例:
$ echo "abc" | grep -io abc
abc
$ echo "ABC" | grep -io abc
$ 但
$ echo "abc" | grep -i abc
abc
$ echo "ABC" | grep -i abc
ABC根据手册页:
-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的bug还是我没有得到地图页面?
我使用的是Mac OS X 10.6.8和
$ grep --version
grep (GNU grep) 2.5.1找到此链接:http://lists.gnu.org/archive/html/bug-gnu-utils/2003-11/msg00040.html
当然,也可以使用像grep -o [aA][bB][cC]这样的变通方法,但这似乎不是一个好的选择。
发布于 2011-12-14 09:17:48
这是初始版本2.5.1上的known bug,根据错误报告,已在2007年初修复(Redhat 2.5.1-5)。不幸的是,即使在Mac OS X 10.7.2上,苹果仍然在使用2.5.1。
您可以通过Homebrew (3.0)、MacPorts (2.26)或fink (3.0-1)获得更新的版本。
编辑:这个问题显然已经在OS 10.11 (或更早的版本)上得到了修复,尽管报告的grep版本仍然是2.5.1。
发布于 2011-12-14 09:10:38
这可能是您的grep版本中的一个问题。
您的测试用例在我的机器上运行正常:
$ echo "abc" | grep -io abc
abc
$ echo "ABC" | grep -io abc
ABC我的版本是:
$ grep --version
grep (GNU grep) 2.10发布于 2013-01-10 02:23:24
如果grep -i不起作用,那么尝试使用tr命令将文件的输出转换为小写,然后通过管道将其转换为标准grep。(这听起来很复杂,但我为您提供的实际命令并非如此!)
请注意,tr命令不会更改原始文件的内容,它只是在将其提供给grep之前对其进行转换。
1.下面是在文件上执行此操作的方法
tr '[:upper:]' '[:lower:]' <your_file.txt|grep what_ever_you_are_searching_in_lower_case2.或者在您的情况下,如果您只是在回应某件事
echo "ABC"|tr '[:upper:]' '[:lower:]' | grep abchttps://stackoverflow.com/questions/8498407
复制相似问题