【发布时间】:2016-04-12 15:10:16
【问题描述】:
我想使用 grep 在我在上一步中指定的多个文件中搜索一个模式,这些文件现在存储在一个文本文件中。
可以说,在第一步中,我使用了
grep -l 'pattern1' *.csv >> ~/filenames.txt
列出所有包含pattern1的csv文件的文件名,并将这些文件名保存到filenames.txt中
现在我想在上述所有文件中搜索第二种模式,pattern2。 我正在寻找类似的命令
grep -?? 'pattern2' ~/filenames.txt
在哪里 -??告诉 grep 在 filenames.txt 中查找文件名 我知道
grep -f patternfile.txt *.csv
将在所有 csv 文件中搜索 patternfile.txt 中定义的模式。是否有一个模拟命令用于搜索在一个充满文件名的文件中指定的所有文件?
我也很高兴听到有关我的整体问题的替代解决方案,例如以某种方式将第 1 步和第 2 步组合在一起,而不使用临时 filenames.txt,但了解模拟 grep 命令(如果存在)也会很有趣。
明确地说,我不只是在寻找包含 pattern1 和 pattern2 的文件。我对 pattern1 至少出现一次的文件中所有出现的 pattern2(然后实际计算它们)感兴趣。
【问题讨论】:
-
您的第一个命令不会返回文件名,而是返回与您的模式匹配的各个行。
-
谢谢本杰明。我已经更新了问题。