SEDまたはAWKを使用してあるファイルの値を別のファイルに置き換える

SEDまたはAWKを使用してあるファイルの値を別のファイルに置き換える

私が解決しようとしている問題を解決するのに役立つ人がいますか?現在、2つのファイルで作業しています。ファイルの内容は、値が次の2つの列で構成されるリストにあります。

ファイル_A.txt:

1 MSFT
2 YHOO
3 GOOG
4 APPL
5 SUN

ファイル_B.txt:

### Client A ###
1
2
3

### Client B ###
2
3
4
5

++++

私は代替方法を使用して1が発生するたびにファイルBの値をMFSTに変更しようとしています。ファイルBに2が表示されるたびに、値をYHOOに、3をGOOGに変更します。

現在私ができる唯一の方法は、対話型sedを使用して受動的で長いプロセスを利用することです。使用できる繰り返し構文はありますか?

sed -i 's/\1\>/MSFT/g' FILE_B.txt

非常にありがとう

ベストアンサー1

そうですか?

awk 'NR==FNR{a[$1]=$2} NR!=FNR{if($1 in a){$1=a[$1]};print}' File_A.txt FILE_B.txt
### Client A ###
MSFT
YHOO
GOOG

### Client B ###
YHOO
GOOG
APPL
SUN

これがうまくいく場合は、出力をtmpファイルにリダイレクトしてから、FILE_B.txtを介してtmpファイルをmvします。spongeインストールされている場合は、次のことができます。

awk 'NR==FNR{a[$1]=$2} NR!=FNR{if($1 in a){$1=a[$1]};print}' File_A.txt FILE_B.txt | sponge FILE_B.txt

おすすめ記事