获取文件的内容并在unix中的特定目录中的所有文件中搜索这些文件

时间:2014-08-13 08:33:06

标签: linux bash shell unix scripting

假设我有一个名为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个文件中。

2 个答案:

答案 0 :(得分:0)

使用findawk

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 *