搜索文件中的多个单词,并为每个文件打印一行-bash

时间:2018-06-26 15:11:40

标签: bash

当前,我正在使用以下命令在文件中搜索2个单词:

grep -r -e word1 -e word2

这将循环遍历所有子目录,查找哪些文件具有word1,word2(当前所有文件同时具有word1和word2),并打印匹配的行。问题是当找到word1时,它会打印一个换行符,并包含找到的文件名和该行。然后,当找到word2时,它将打印换行符,并包含找到的文件名和该行。因此文件名被打印两次。

所以输出将是这样的:

file1: word1 ... rest of line
file1: word2 ... rest of line

但是我想要这样的东西:

file1: word1 ... rest of line    word2 ... rest of line

在word1和word2之间的空白可能是制表符或其他分隔符。

我不想解析我的原始输出,而必须手动将这些行合并在一起。我正在寻找使用bash一次性执行此操作的命令。

1 个答案:

答案 0 :(得分:0)

如果保证每个文件的每个单词只有一个匹配项,则可以执行以下操作:

grep -r -e word1 -e word2 <directory> | paste -d " "  - -