【发布时间】:2019-02-22 08:32:23
【问题描述】:
匹配两个文件中的第 1、2、3 列,如果它们相等。
对于列匹配的文件,将 file1 中第 4 列的值写入 file2 如果没有匹配则写NA
文件1
31431 37150 100 10100
31431 37201 100 12100
31431 37471 100 14100
文件2
31431 37150 100 14100
31431 37131 100 14100
31431 37201 100 14100
31431 37478 100 14100
31431 37471 100 14100
期望的输出:
31431 37150 100 14100 10100
31431 37131 100 14100 NA
31431 37201 100 14100 12100
31431 37478 100 14100 NA
31431 37471 100 14100 14100
我试过了
awk '
FNR==NR{
a[$1 $2 $3]=$4
next
}
($1 in a){
$1=a[$1]
found=1
}
{
$0=found==1?$0",":$0",NA"
sub(/^...../,"&,")
$1=$1
found=""
}
1
' FS=" " file1 FS=" " OFS="," file2
【问题讨论】:
-
FS=" " file1 FS=" " OFS="," file2中设置 FS 时你想做什么?您将 OFS 设置为,并在代码中对逗号进行了一些额外的硬编码,但在您的预期输出中没有任何逗号的迹象。为什么?
标签: awk