我有两个CSV文件:
id.1 id.2
1 2
a b
和
Name id
John 1
Amber a
基本上一个是带有替换的列表,其他只是一个列表。我需要用id.2替换id.1的所有实例。理想情况下,您可以使用OS X终端进行操作。我找到了几种方法来替换多个文件中的文本,但没有使用多个字符串。 谢谢大家。
答案 0 :(得分:1)
不确定我是否正确理解了您的问题,但您可以扫描替换文件,注意哪些内容需要替换为什么值。然后迭代列表文件并将替换值与更新的值交换。像这样:
awk 'NR==FNR{a[$1]=$2;next} $2 in a{print $1,a[$2]}' replacement.txt list.txt
$ cat list.txt
Name id
John 1
Amber a
$ cat replacement.txt
id.1 id.2
1 2
a b
$ awk 'NR==FNR{a[$1]=$2;next} $2 in a{print $1,a[$2]}' replacement.txt list.txt
John 2
Amber b
答案 1 :(得分:0)
如果我正确理解了您的需求,您可以尝试sort
和join
。使用bash样式的流程替换,您可以执行
$ join -11 -22 -o 2.1,1.2 <(sort -k1 <(tail -n+2 id12)) <(sort -k2 <(tail -n+2 list))
John 2
Amber b
其中id12
是第一个文件,list
是第二个文件。