小编Vio*_*laW的帖子

如何从一长串字符串组合中查找包含各种字符串的所有文件?

我对命令行工具仍然很陌生(使用我的 Mac OSX 终端),希望我没有错过其他地方的答案,但我已经搜索了几个小时。

我有一个包含 3 个字符串的 200 个组合的文本文件(我们称之为 strings.txt)。[编辑 2017/01/30 ] 前五行如下所示:

"surveillance data" "surveillance technology" "cctv camera"
"social media" "surveillance techniques" "enforcement agencies"
"social control" "surveillance camera" "social security"
"surveillance data" "security guards" "social networking"
"surveillance mechanisms" "cctv surveillance" "contemporary surveillance"
Run Code Online (Sandbox Code Playgroud)

请注意,我可以将 strings.txt 更改为任何其他格式,只要第 1 行中的监视数据之类的 bigrams/2-word 短语保持在一起。(这意味着我可以在必要时删除引号,至于下面@MichaelVehrs 的答案)。

现在我想在一个包含 800 多个文件的目录中搜索那些至少包含一个字符串组合(文件中的任何位置)的文件。我最初的想法是将 egrep 与这样的模式文件一起使用:

egrep -i -l -r -f strings.txt file_directory
Run Code Online (Sandbox Code Playgroud)

但是,如果每行有一个字符串,我只能让它工作。这是不可取的,因为我需要标识的文件包含给定模式的所有三个字符串。有没有办法向 grep 模式文件添加某种 AND 运算符?或者是否有另一种方法可以使用其他功能/工具来实现我想要的?非常感谢!

编辑 2017/01/30

下面@MichaelVehrs 的回答非常有帮助;我将其编辑为以下内容:

while read one two three four five …
Run Code Online (Sandbox Code Playgroud)

osx grep awk text-processing

6
推荐指数
1
解决办法
2284
查看次数

标签 统计

awk ×1

grep ×1

osx ×1

text-processing ×1