首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >完全匹配/子字符串

完全匹配/子字符串
EN

Stack Overflow用户
提问于 2014-09-16 09:34:33
回答 2查看 72关注 0票数 0

我有一套词,看起来像:

fruits.txt

代码语言:javascript
复制
APPLE,2  
apple,3  
APPLE-ORANGE,3  
APPLEORANGE-GRAPE,5  

只打印“苹果”。

下面是我尝试过的内容,几乎所有有类似问题的命令都返回相同的输出,如下所示:

grep -iE "apple\b" fruits.txt

苹果,2

苹果,3

苹果橙,3 ##this是我想忽略的额外行。

我也尝试过以下方法,但是没有返回任何东西。

grep -i '^apple$' fruits.txt

预期输出

苹果,2

苹果,3

PS:请不要在grep -iE 'apple\b' fruits.txt | grep -v "-"上建议我不能在循环中使用这个来防止“苹果-橙色”的油腻,这也是一个问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-16 09:48:23

尝试:

代码语言:javascript
复制
grep -i 'apple[ ,]' fruits.txt 
grep -iP 'apple\b(?=[\s,])' fruits.txt

代码语言:javascript
复制
APPLE,2
apple,3
APPLE-ORANGE,3
APPLEORANGE-GRAPE,5
applE , 8
AAple900

两种指纹

代码语言:javascript
复制
APPLE,2
apple,3
applE , 8

这两个规则都搜索不区分大小写的苹果,然后是至少一个(空格)或,

如果您不想接受(空格),只需移除字符组.

或者,您应该对grep说什么是不允许跟随apple的,比如:

代码语言:javascript
复制
grep -iP 'apple[^\w-]' fruits.txt
grep -iE 'apple[^[:alnum:]-]' fruits.txt

搜索apple后面没有任何单词、字符或-

票数 2
EN

Stack Overflow用户

发布于 2014-09-16 11:12:58

您可以将awk用于此任务:

代码语言:javascript
复制
$ awk -F, -v IGNORECASE=1 '$1 ~ /^apple$/' fruits.txt
APPLE,2  
apple,3

如果您想要传递一个要使用的awk变量,可以这样做:

代码语言:javascript
复制
$ fruit=apple
$ awk -F, -v IGNORECASE=1 -v FRUIT="^$fruit\$" '$1 ~ FRUIT' fruits.txt
APPLE,2  
apple,3
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25865346

复制
相关文章

相似问题

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