Unix-如何在文件中搜索确切的字符串

时间:2018-09-26 16:23:22

标签: unix grep full-text-search

我正在尝试搜索包含与另一个文件中列出的ID完全相同的ID的所有文件,并将文件名放在另一个文件中。我正在使用以下命令来查找文件。

grep -w -f SearchList.txt INFILES* > matched.txt

ID列在SearchList.txt文件中 示例-

450462134
747837483
352362362

INFILES文件包含此格式的数据-

  

0120171116 07:37:45:828501 450462134 000001205 0120171116
  07:37:45:828501 747837483 000001205 0120171116
  07:37:45:828501 352362362 000001205

我要查找的ID在开头与其他文本结合在一起,但在末尾有一个空格。

我尝试将\ b放在SearchList.txt文件中搜索文本的开头和结尾,但仍然得到不正确的结果。

任何引导正确命令的方法都将不胜感激。

-bash-3.2$ bash --version
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)

-bash-3.2$ grep --version
grep (GNU grep) 2.5.1

1 个答案:

答案 0 :(得分:2)

-w的{​​{1}}选项实际上在模式的两端插入了grep,只需要在其末尾插入。一种可行的选择是将\b添加到具有\b的模式中,例如:

sed

由于您只对匹配文件名感兴趣,因此应将sed 's/$/\\b/' SearchList.txt 选项与-l一起使用。现在将其与grep一起使用并进行流程替换:

grep