我对Shell或Bash很新鲜。我有一个列有大约5000行的file1,file2有五行有240k行。如何检查file1中5000行的值是否在file2的第二列内?
$wc -l file1
$5188
$wc -l file2
$240,888
答案 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