grep –ignore-case –only
同时使用–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或我没有得到地图页?
我正在使用Mac OS X 10.6.8和
$ grep --version grep (GNU grep) 2.5.1
find这个链接: http : //lists.gnu.org/archive/html/bug-gnu-utils/2003-11/msg00040.html
当然可以使用像grep -o [aA][bB][cC]
这样的解决方法,但是这似乎不是一个好的select。
这是最初的2.5.1中已知的一个bug ,根据bug报告,在2007年初(Redhat 2.5.1-5)已经修复。 不幸的是,即使在Mac OS X 10.7.2上,苹果仍然使用2.5.1。
您可以通过自制软件(3.0)或MacPorts(2.26)或fink(3.0-1)获得更新的版本。
编辑:显然它已被修复OS X 10.11(或者更早),即使报告的grep版本仍然是2.5.1。
这应该是你的版本的grep问题。
您的testing用例在我的机器上正常工作:
$ echo "abc" | grep -io abc abc $ echo "ABC" | grep -io abc ABC
而我的版本是:
$ grep --version grep (GNU grep) 2.10
如果你的grep -i不起作用,那么尝试使用tr命令将你的文件的输出转换成小写,然后用你想要的任何东西把它转换成标准的grep。 (这听起来很复杂,但我提供给你的实际命令不是!)。
注意tr命令不会改变你的原始文件的内容,只是在它把它送入grep之前转换它。
1.你可以在文件上做到这一点
tr '[:upper:]' '[:lower:]' <your_file.txt|grep what_ever_you_are_searching_in_lower_case
或者如果你只是回应一些东西
echo "ABC"|tr '[:upper:]' '[:lower:]' | grep abc
我build议-i
表示它匹配“ABC”,但差异在输出中。 -i
不会操作input,所以不会将“ABC”更改为“abc”,因为您指定了“abc”作为模式。 -o
表示它只显示与指定模式相匹配的输出部分,并不表示匹配input。
echo "ABC" | grep -i abc
的输出 echo "ABC" | grep -i abc
是ABC
, -o
显示匹配“abc”的输出,所以没有显示:
Naos:~ mattlacey$ echo "ABC" | grep -i abc | grep -o abc Naos:~ mattlacey$ echo "ABC" | grep -i abc | grep -o ABC ABC