如何检查另一个文件的行内是否有文件行

时间:2013-12-09 15:03:03

标签: bash shell match

我对Shell或Bash很新鲜。我有一个列有大约5000行的file1,file2有五行有240k行。如何检查file1中5000行的值是否在file2的第二列内?

$wc -l file1
$5188
$wc -l file2
$240,888

2 个答案:

答案 0 :(得分:2)

你可以用awk这样做:

awk 'NR == FNR {a[$2] = $1; next} {if ($2 in a){print(a[$2], $1)}}' file1 file2

基本上你读取第一个文件并将其内容存储在数组“a”中。然后你读取第二个文件,检查每行的第二个字段是否包含在数组“a”中,如果是,则打印出来。

我的回答是假设您的字段被空格分隔,如果不是,您将不得不更改分隔符。因此,如果您的字段以逗号分隔,则需要:

awk -F,       .....

答案 1 :(得分:0)

上述语法确实有效,可以进一步简化为:

awk 'FNR==NR{a[$1]=$2; next} {print $1, a[$1]}' file2 file1