2013-06-27 43 views
2

我想加入其中一列的兩個文件,輸出應該是第二個文件的列和第一個文件的一些列。AWK加入特定列上的兩個文件

例如我的第一個文件是:

subscriberid unsubscribetime unsubscribeip listid statid退訂

和我的第二個文件是:

listid statid LISTNAME OWNERNAME OWNEREMAIL CREATEDATE subscriberid bouncetype bouncetime bouncerule

我需要在第一個文件中的第五個和第二個文件中的第二個「statid」列中加入它們。之後,從第一個文件中添加第2,第3和第6列。輸出應該是:

listid statid LISTNAME OWNERNAME OWNEREMAIL CREATEDATE subscriberid bouncetype bouncetime bouncerule unsubscribetime unsubscribeip退訂

我無法理解語法,但我使用這個命令:

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

我以爲它會給我file2列,因爲「打印$ 0」和第二列形式文件之一設置爲[$ 5] = $ 2,但它只輸出file2列。

我在哪裏犯了錯誤? 如何將第2,第3和第6列從file1加入到file2?

任何幫助/解釋非常感謝!

在這個例子中這兩個文件只有一行

回答

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 
+0

哇它的作品!我會試着瞭解:D謝謝! – Dropout