2つのファイルがあります。 file1.txtの最初の列(「、」で区切られた)は、file2.txtの最初の列と同じです。これら2つのファイルを比較し、file1.txtの2番目の列をfile2.txtに置き換えたいと思います。
ファイル1.txt
ABC-aBc-AbC,abc-abc-abc
AAA-AAA-AAA,aaa-aaa-aaa
ファイル2.txt
テキストテキストABC-aBc-AbCテキストテキストテキストAAA-AAA-AAAテキストテキスト。
答え1
file2.txt
このファイルは、最初の列文字列インスタンスを含むことができる自由形式のテキストファイルであり、file1.txt
それを対応する2番目の列文字列に置き換えたいとします。
正規表現特殊文字が含まれていない場合は、file1.txt
それをsedスクリプトに変換してからsedスクリプトを2番目のファイルに適用することが非常に効率的なアプローチかもしれません。
sed 's/.*/s,&,g/' file1.txt | sed -f- file2.txt
text text abc-abc-abc text text text aaa-aaa-aaa text text.
または(今回は の文字列がスペースでfile2.txt
区切られていると仮定)の項目に基づいてルックアップテーブルを作成し、フィールドを繰り返してそれに応じて置き換えることができます。file1.txt
file2.txt
awk -F, 'NR==FNR {a[$1]=$2; next} {for (i=1;i<=NF;i++) {if ($i in a) $i = a[$i]}} 1' file1.txt FS='[ \t]+' file2.txt
text text abc-abc-abc text text text aaa-aaa-aaa text text.
または
awk -F, 'NR==FNR {a[$1]=$2; next} {for (i=1;i<=NF;i++) {$i = $i in a? a[$i] : $i}} 1' file1.txt FS='[ \t]+' file2.txt
text text abc-abc-abc text text text aaa-aaa-aaa text text.