首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >grep --ignore-case --only

grep --ignore-case --only
EN

Stack Overflow用户
提问于 2011-12-14 09:07:34
回答 4查看 177.2K关注 0票数 82

同时使用--ignore-case和--only-match选项时,grep会失败。示例:

代码语言:javascript
复制
$ echo "abc" | grep -io abc
abc
$ echo "ABC" | grep -io abc
$ 

代码语言:javascript
复制
$ 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和

代码语言:javascript
复制
$ 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]这样的变通方法,但这似乎不是一个好的选择。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 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。

票数 49
EN

Stack Overflow用户

发布于 2011-12-14 09:10:38

这可能是您的grep版本中的一个问题。

您的测试用例在我的机器上运行正常:

代码语言:javascript
复制
$ echo "abc" | grep -io abc
abc
$ echo "ABC" | grep -io abc
ABC

我的版本是:

代码语言:javascript
复制
$ grep --version
grep (GNU grep) 2.10
票数 15
EN

Stack Overflow用户

发布于 2013-01-10 02:23:24

如果grep -i不起作用,那么尝试使用tr命令将文件的输出转换为小写,然后通过管道将其转换为标准grep。(这听起来很复杂,但我为您提供的实际命令并非如此!)

请注意,tr命令不会更改原始文件的内容,它只是在将其提供给grep之前对其进行转换。

1.下面是在文件上执行此操作的方法

代码语言:javascript
复制
tr '[:upper:]' '[:lower:]' <your_file.txt|grep what_ever_you_are_searching_in_lower_case

2.或者在您的情况下,如果您只是在回应某件事

代码语言:javascript
复制
echo "ABC"|tr '[:upper:]' '[:lower:]' | grep abc
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8498407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档