我有一套词,看起来像:
fruits.txt
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 "-"上建议我不能在循环中使用这个来防止“苹果-橙色”的油腻,这也是一个问题。
发布于 2014-09-16 09:48:23
尝试:
grep -i 'apple[ ,]' fruits.txt
grep -iP 'apple\b(?=[\s,])' fruits.txt从
APPLE,2
apple,3
APPLE-ORANGE,3
APPLEORANGE-GRAPE,5
applE , 8
AAple900两种指纹
APPLE,2
apple,3
applE , 8这两个规则都搜索不区分大小写的苹果,然后是至少一个(空格)或,。
如果您不想接受(空格),只需移除字符组.
或者,您应该对grep说什么是不允许跟随apple的,比如:
grep -iP 'apple[^\w-]' fruits.txt
grep -iE 'apple[^[:alnum:]-]' fruits.txt搜索apple后面没有任何单词、字符或-。
发布于 2014-09-16 11:12:58
您可以将awk用于此任务:
$ awk -F, -v IGNORECASE=1 '$1 ~ /^apple$/' fruits.txt
APPLE,2
apple,3如果您想要传递一个要使用的awk变量,可以这样做:
$ fruit=apple
$ awk -F, -v IGNORECASE=1 -v FRUIT="^$fruit\$" '$1 ~ FRUIT' fruits.txt
APPLE,2
apple,3https://stackoverflow.com/questions/25865346
复制相似问题