將兩個文檔逐行鏈接,好比:
a文件內容是
a 1
b 2
c 3html
b文件內容是
a 5
b 6shell
結果是
a 1 5
b 2 6
c 3數組
awk代碼爲:app
awk '{a[$1]=a[$1]" "$2}END{for (j in a) print j""a[j]}' a b
說實話,這行代碼至關難以理解。看完了awk的語法,也沒有發現相似的用法。使用谷歌找到了一個解釋。unix
{ a[$1]=a[$1]" " $2; next } means append the value of field two ($2) to an array (a) indexed by the value of field one ($1)code
意思是a數組以$1
爲key,a[$1]
的初值是空字符串,將同一個key對應的" "$2
不斷追加到a[$1]
中。
好比:htm
awk '{a[$1]=a[$1]" "$2}END{for (j in a) print a[j]}' a b
上面代碼的結果是(間隔爲兩個空格):ip
1 5 2 6 3
還有一種方法文檔
shellpaste -d' ' a b | awk '{print $1, $2, $4}'
但這種寫法沒有第一種好,第一種寫法能夠保證b文件的第一列順序與a不一樣時仍然能夠實現拼接。好比,當b文件內容下面這種時,結果是同樣的
b 6
a 5字符串