我有两个 CSV 文件:
id.1 id.2
1 2
a b
和
Name id
John 1
Amber a
基本上一个是有替换的列表,另一个只是一个列表。我需要用 id.2 替换 id.1 的所有实例。理想情况下,您会使用 OS X 终端来完成。我找到了几种方法来替换多个文件中的文本,但不使用多个字符串。谢谢大家。
不确定我是否正确理解了您的问题,但您可以扫描您的替换文件,注意需要用什么值替换什么。然后迭代列表文件并将替换值交换为更新的值。像这样的东西:
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
如果我正确理解您的需求,您可以尝试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
,第二个文件在哪里。