假设我有一个名为result的文件,其中包含以下内容: -
column_a column_b column_c
888888 854254 412589
777777 458754 863324
我想在此特定目录中的所有文本文件中搜索仅column_a和column_b的内容。假设此目录包含100个文本文件。我想在所有目录中搜索结果文件的column_a和column_b,并在屏幕上使用特定字符串所在文件的名称进行打印。
类似888888存在于file1 file4 file77中的100个文件中。
答案 0 :(得分:0)
使用find
和awk
:
find dir -type f -maxdepth 1 -mindepth 1 -print0 | xargs -0 -d '\n' -- \
awk -v s='888888' '$1 == s || $2 == s { printf "%s is in %s.\n", s, FILENAME; nextfile }'
-maxdepth 1
或-mindepth 1
是可选的。
nextfile
是GNU awk的扩展。如果你不使用GNU awk,你可以这样做:
awk -v s='888888' '($1 == s || $2 == s) && !a[FILENAME]++ { printf "%s is in %s.\n", s, FILENAME }'
答案 1 :(得分:0)
首先,修改结果文件以使其更有用:
awk 'NR>1{printf "%s\n%s\n", $1, $2}' result > tmp
然后使用grep查找匹配的文件:
grep -w -l -f tmp *