文件1
O,tested test,12345
OC,test explore,34567
文件2
O,new order
OC,new quote
我需要如下的输出:
New order,tested test,12345
New quote,test explore,34567
答案1
这是一份工作join
:
join -t, -j1 -o 2.2,1.2,1.3 <(sort file1) <(sort file2)
-t
指定输入和输出分隔符-j1
是连接字段(两个文件中都是第一个)-o ...
问题所需的输出格式
答案2
awk
通过读取内存中的一个文件然后替换另一个文件中的项目,可以很好地处理此问题:
$ awk -F, -v OFS="," 'FNR==NR {a[$1]=$2; next} {$1=a[$1]}1' f2 f1
new order,tested test,12345
new quote,test explore,34567
这个想法是将 file2 中的值存储在一个数组中values[file1]=file2
。然后,当读取 file1 时,我们用数组中的映射替换第一个字段values[]
。
请注意,这可以扩展以考虑字段不存在于数组中的情况或更多情况。