如何在文件 1 中查找并用文件 2 中的值替换

如何在文件 1 中查找并用文件 2 中的值替换

文件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[]

请注意,这可以扩展以考虑字段不存在于数组中的情况或更多情况。

相关内容