Awk
使用 awk 用另一列中的資訊填充一列
我有兩個由標籤分隔的文件:
文件 1.txt:
1 KD 2 LBJ 3 YAO 4 LBJ 5 YAO 6 MJ 7 MJ 8 YAO 9 KD
文件2.txt:
KD 35 LBJ 6 YAO 11 MJ 23
預期輸出:
1 KD 35 2 LBJ 6 3 YAO 11 4 LBJ 6 5 YAO 11 6 MJ 23 7 MJ 23 8 YAO 11 9 KD 35
感謝您對 awk 的任何幫助。
你可以用 awk 做到這一點:
awk -F'\t' -v OFS='\t' 'NR==FNR{a[$1]=$2;next}{print $0, a[$2]}' file2 file1 1 KD 35 2 LBJ 6 3 YAO 11 4 LBJ 6 5 YAO 11 6 MJ 23 7 MJ 23 8 YAO 11 9 KD 35
另一種選擇是使用
join
命令:join -1 2 -2 1 -o 1.1 1.2 2.2 -t $'\t' <(sort -k2,2 file1) <(sort file2) | sort -n
解釋:
-1 2 -2 1
告訴join
命令將第一個欄位的第二個欄位與第二個文件的第一個欄位連接起來-o 1.1 1.2 2.2
這指定了輸出中欄位的順序。點前面的數字是文件號,點後面的數字是文件的欄位號-t $'\t'
指定分隔符是製表符<(sort -k2,2 file1) <(sort file2)
按要加入的欄位對文件進行排序。該join
命令要求對文件進行排序。| sort -n
對輸出文件進行排序