使用 shell 替换列

使用 shell 替换列

当找到匹配项时,如何将第 1 列替换File1为第 2 列?File2

File1
id1 36987
id2 75685
id3 12345
id4 12896

File2
id1 ID1
id2 ID2
id3 ID3
id5 ID5

我想把这个写在另一个上File3,应该看起来像:

File3
ID1 36987
ID2 75685
ID3 12345
id4 12896

我目前正在尝试(未成功):

sed `File2.txt | awk '{print "-e s/"$1"/"$2"}'`<<< "File1.txt" 

答案1

awk

$ awk 'NR==FNR {a[$1]=$2; next}; a[$1] {$1=a[$1]} 1' File2 File1
ID1 36987
ID2 75685
ID3 12345
id4 12896

答案2

我用来sed生成sed脚本:

sed 's=^=s/=;s= =/=;s=$=/=' File2 | sed -f- File1

相关内容