AWK连接特定列上的两个文件

时间:2013-06-27 12:18:25

标签: awk joincolumn

我正在尝试在其中一个列上连接两个文件,输出应该是第二个文件的列和第一个文件中的一些列。

例如我的第一个文件是:

  

subscriberid unsubscribetime unsubscribeip listid statid unsubscribed

我的第二个文件是:

  

listid statid listname ownername owneremail createdate subscriberid bouncetype bouncetime bouncerule

我需要在“statid”列中加入它们,该列在第一个文件中是第5个,在第二个文件中是第2个。之后,从第一个文件中添加第2,第3和第6列。输出应为:

  

listid statid listname ownername owneremail createdate subscriberid bouncetype bouncetime bouncerule unsubscribetime unsubscribeip unsubscribed

我无法理解语法,但我正在使用此命令:

awk 'NR==FNR{a[$5]=$2;next} $2 in a{print $0, a[$5]}' file1 file2

我认为它会给我file2列,因为“print $ 0”和第二列表单文件一个设置为[$ 5] = $ 2,但它只输出file2列。

我在哪里弄错了,拜托? 如何将第1列,第3列和第6列从file1加到file2?

非常感谢任何帮助/解释!

此示例中的两个文件只有一行

1 个答案:

答案 0 :(得分:2)

我确定你是否看到了这一点并想一想你会弄清楚:

$ awk 'NR==FNR{a[$5]=$2" "$3" "$6;next} $2 in a{print $0, a[$2]}' file1 file2
listid statid listname ownername owneremail createdate subscriberid bouncetype bouncetime bouncerule unsubscribetime unsubscribeip unsubscribed