0

伙计们,

我有一个文本文件,其中包含多行,每行一个字符串:

str1
str2
str3

ETC..

我想阅读该文件的每一行,然后在位于不同目录的多个文件中搜索这些字符串。

我不太确定如何进行。

非常感谢您的帮助。

4

4 回答 4

2
for wrd in $(cut -d, -f1 < testfile.txt); do grep $wrd dir/files* ; done
于 2013-08-19T18:19:31.217 回答
2

使用 GNU Grep 的--file选项

根据 grep(1):

   -f FILE, --file=FILE
          Obtain  patterns  from  FILE,  one  per  line.   The  empty file
          contains zero patterns, and therefore matches nothing.   (-f  is
          specified by POSIX.)

-H和标志将-n打印每个匹配的文件名和行号。因此,假设您将模式存储在 /tmp/foo 中并希望搜索 /tmp/bar 中的所有文件,您可以使用以下内容:

# Find regular files with GNU find and grep them all using a pattern
# file.
find /etc -type f -exec grep -Hnf /tmp/foo {} +
于 2013-08-19T18:16:47.557 回答
2
awk 'NR==FNR{a[$0];next} { for (word in a) if ($0 ~ word) print FILENAME, $0 }' fileOfWords /wherever/dir/*
于 2013-08-20T11:31:07.677 回答
1
while read -r str
do
   echo "$str"
   grep "$str" /path/to/other/files
done < inputfile
于 2013-08-19T18:16:32.500 回答