a.txt的第三列按照2.txt替换1
2
3
4
5
6
7
8
9
10
11
12
13
14cat a.txt
1 h 1 hhh
2 k 3 uytfd
3 d 2 gfsr
4 f 3 jdgk
cat b.txt
1 a
2 b
3 c
cat 预期结果
1 h a hhh
2 k c uytfd
3 d b gfsr
4 f c jdgk
join版
1 | join -t$'\t' -o 1.1 1.2 2.2 1.4 -1 3 -2 1 <(sort -k3 a.txt) b.txt | sort -n -k1 |
join命令:join -1 <file_1_field> -2 <file_2_field> <file_1> <file_2>
-a<1或2> 除了显示原来的输出内容之外,还显示指令文件中没有相同栏位的行。
-i或—igore-case 比较栏位内容时,忽略大小写的差异。
-t<字符> 使用栏位的分隔字符。 1或2>
awk版
1 | awk 'BEGIN{FS=OFS=" "} NR==FNR {a[$1]=$2;next}{print $1,$2,a[$3],$4}' b.txt a.txt |