awk 作为两个文件之间的 vlookup

awk 作为两个文件之间的 vlookup

我将以下 2 个文件选项卡分开:

文件1:

KEY1    TEXT1
KEY2    TEXT2
KEY3    TEXT3

文件2:

KEY1    111
KEY2    222
KEY3    333

我想实现以下目标,其中“aaa”、“bbb”是静态文本:

aaa TEXT1   bbb 111 ccc KEY1    ddd
aaa TEXT2   bbb 222 ccc KEY2    ddd
aaa TEXT3   bbb 333 ccc KEY3    ddd

我正在运行以下代码:

 awk -F'\t' -f vlookup.awk file1 file2

其中 vlookup.awk 是:

FNR==NR{
  a[$1]=$2
  next
}
{ if ($1 in a) { print "aaa", a[$1], "bbb", $2} else {print $1, "ERROR"}}

这适用于第一部分,但一旦我添加,"ccc", $1, "ddd"结果就会变得混乱,例如:

aaa cccXT1  KEY111ddd1

亲切的问候dk

答案1

$ cat vlookup.awk 
BEGIN { OFS="\t" }
FNR==NR{
  a[$1]=$2
  next
}
#{ if ($1 in a) { print "aaa", a[$1], "bbb", $2} else {print $1, "ERROR"}}
{ if ($1 in a)  { print "aaa", a[$1], "bbb", $2, "ccc", $1, "ddd" } else {print $1, "ERROR"}}
$ awk -F'\t' -f vlookup.awk file1 file2
aaa     TEXT1   bbb     111     ccc     KEY1    ddd
aaa     TEXT2   bbb     222     ccc     KEY2    ddd
aaa     TEXT3   bbb     333     ccc     KEY3    ddd

相关内容