如果搜索的单词以特定字符开头/结尾,则grep忽略

时间:2017-03-23 13:04:24

标签: shell grep

这是我的问题:我使用grep在多个文件中查找字符串。

假设我正在寻找“气球”这个词。 grep返回包含气球的行,例如“Here is a balloon”,“loginxxballoonx”,“balloon123”等。除了一个案例之外,这不是问题:我想忽略该行,如果它找到“/balloon/".

如何在多个文件中查找每个“气球”字符串,但忽略带/前后的字符串(忽略“/ balloon /”)

编辑:我会更准确地解决我的问题:我要搜索的字符串存储在一个文件中。我使用grep -f mytokenfile来搜索存储在“mytokenfile”文件中的每个字符串。例如,我的文件“mytokenfile”如下所示:

balloon
avion
car
bus

除了前缀和后缀是“/”。

2 个答案:

答案 0 :(得分:1)

应该使用否定符号^

grep [^/]balloon[^/] ballonfile

编辑: 但是,如果有一个气球,那么这并不起作用。没有前缀或任何其他字符的后缀。

答案 1 :(得分:0)

使用以下方法(考虑到可能存在多次出现搜索关键字的行,例如loginxxballoonx, sme text /balloon/ text):

cat testfile | grep '[^/]balloon[^/]' | grep -v '/balloon/'
  

-v( - 反向匹配)

     

反转匹配感,选择不匹配的线条。 (-v是   由POSIX指定。)