如何在不使用grep的情况下从另一个文件中搜索值?

时间:2017-03-18 06:38:44

标签: linux awk getline

我有两个文件。文件1和文件2,内容如下。我想在file2中找到文件1的值。

搜索我得到了以下查询,但我无法理解。

查询:

cat file1 | awk -F ',' 'BEGIN{while(getline<"file2"){OFS=",";a[$2]=$1","$2","$3}} {print $0,a[$1]}' >> Final

File1中

173
149
133
162

文件2

140, dog
145, cat
149, rat
133, frog
160, lion
162, total

请注意:正常的grep花费大量时间,因为文件2的大小非常大。

1 个答案:

答案 0 :(得分:2)

注意,无需喂食cat

$ awk -F, 'NR==FNR{a[$1];next}$1 in a' f1 f12
149, rat
133, frog
162, total

说明:

awk -F, '   # set delimiter to ,
NR==FNR{    # process the first file
    a[$1]   # hash the keys to a
    next    # off to the next record
}
$1 in a     # for the second file, if key ($1) is found in hash, output record
' f1 f2     # file order is important