2 つの CSV ファイルがあります。
id.1 id.2
1 2
a b
と
Name id
John 1
Amber a
基本的に、1 つは置換を含むリストで、もう 1 つは単なるリストです。id.1 のすべてのインスタンスを id.2 に置き換える必要があります。理想的には、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
は 2 番目のファイルです。