我不知道在 unix 中应该使用什么命令。
假设我有一个这样的文件:
A 23
B 52
C 36
F 25
第二个文件有 3 列:
A aligator 2
B panda 3
C bear 4
D pig 1
E yeti 0
F shark 9
G dog 10
H cat 1
现在,如果第一列的值在文件之间匹配,我想使用第二列值(2 个文件)替换第一列值(在 1 个文件中)
输出示例:
aligator 23
panda 52
bear 36
shark 25
谁能帮我?
最好的。
答案1
如果文件已排序,您可以使用join
coreutils:
join -o '2.2 1.2' file1 file2
输出:
aligator 23
panda 52
bear 36
shark 25
答案2
这awk
是完成这项工作的一个很好的工具:
awk 'NR==FNR{a[$1]=$2;next}a[$1]{print $2,a[$1]}' file1 file2
当读取第一个文件时 ( FN==FNR
)a
用第二列中的值填充数组并从第一列开始索引。然后,当处理第二个文件时,打印其第二列和 file1 中的第二列。
输出:
aligator 23
panda 52
bear 36
shark 25