【发布时间】:2018-06-26 15:11:39
【问题描述】:
目前我正在使用以下命令在文件中搜索 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 一次性完成此操作的命令。
【问题讨论】:
-
如果 word1 在 file1 和 word2 中出现两次(在不同的行)怎么办?是否应该在具有四个制表符分隔结果的单个输出行上累积?
-
对于这个问题,我知道所有文件的确切布局。他们遵循一定的格式,你描述的情况不会发生。将只有 1 个“word1”和 1 个“word2”。它们不是单词,它们是唯一的字符串
标签: bash