我是 shell 脚本新手,想创建以下内容。我相信我可以使用类似的东西grep -xvFf file1 file2
,但我不确定如何以正确的顺序创建输出文件。
我有 file1 如下:
CustomerName CustomerID
Joe 1
Kenny 2
Craig 3
Pearl 4
file2 有以下内容:
CustomerName CustomerID
Pearl
Kenny
Joe
Craig
所以我想要完成的是创建两个文件的比较以查找丢失的数据,然后将该数据输出到第三个文件中,其顺序与 file2 相同。因此输出文件如下所示:
CustomerName CustomerID
Pearl 4
Kenny 2
Joe 1
Craig 3
任何见解都会很棒
答案1
使用awk
:
awk 'NR==1 { print; }
NR==FNR && FNR>1{ customerIds[$1]=$2; next }
FNR>1 && ($1 in customerIds) { print $1, customerIds[$1]; }
' OFS='\t' file1 file2
使用 时打印一次标题行NR==1 { print; }
。
然后存储来自文件1customerIds
到一个名为(键是 customerName $1
,值是 Ids )的关联数组中$2
:
NR==FNR && FNR>1{ customerIds[$1]=$2; next }
接下来我们检查文件2,如果数组中存在 customerName,customerIds
则打印 customerName,$1
后跟我们上面保存的同一数组中的 Id。
FNR>1 && ($1 in customerIds) { print $1, customerIds[$1]; }
答案2
$ awk 'NR==FNR{a[$1]=$0; next} $1 in a{print a[$1]}' file1 file2
CustomerName CustomerID
Pearl 4
Kenny 2
Joe 1
Craig 3