0

2 つの CSV ファイルがあります。

id.1 id.2    
1 2     
a b

Name id   
John 1   
Amber a

基本的に、1 つは置換を含むリストで、もう 1 つは単なるリストです。id.1 のすべてのインスタンスを id.2 に置き換える必要があります。理想的には、OS X ターミナルを使用して実行します。複数の文字列を使用せずに、複数のファイルのテキストを置き換える方法をいくつか見つけました。皆さんありがとう。

4

2 に答える 2

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
于 2013-06-05T15:57:49.130 に答える
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は 2 番目のファイルです。

于 2013-06-05T16:00:22.150 に答える