使用awk
:
awk 'FNR == NR { a[$1] = $2; next } { print $1, a[$1], $2 }' file2 file1
輸出:
test4 C 30
test6 E 29
test3 B 17
test2 A 12
test5 D 5
如果file1尚未排序,你可以這樣做:
sort -nr -k 2 file1 | awk 'FNR == NR { a[$1] = $2; next } { print $1, a[$1], $2 }' file2 -
或者
awk 'FNR == NR { a[$1] = $2; next } { print $1, a[$1], $2 }' file2 <(sort -nr -k 2 file1)
有很多方法來格式化輸出。您可以使用column -t
:
... | column -t
輸出:
test4 C 30
test6 E 29
test3 B 17
test2 A 12
test5 D 5
或者您可以使用printf
。雖然我更喜歡使用column -t
,因爲如果一列的長度比printf
提供的實際大小大,表格將會被破壞。
... { printf "%s%3s%4.2s\n", $1, a[$1], $2 }' ...
輸出:
test4 C 30
test6 E 29
test3 B 17
test2 A 12
test5 D 5
你嘗試過什麼解決辦法嗎? – Jotne
我用'awk'來創建'file1.txt'和'file2.txt'。但我無法創建result.txt。 – MLSC
請參閱此鏈接這可能有助於您的要求。 http://stackoverflow.com/questions/5467690/how-to-merge-two-files-using-awk – Chandru