シェルスクリプトでsedコマンドを使用してファイルエントリを1行ずつ変更する方法は?

シェルスクリプトでsedコマンドを使用してファイルエントリを1行ずつ変更する方法は?

これは私のものですfile1

#$BQ
#{ボリューム@ホーム}
#データベースバー
#relationshiptcdeatid
#コピー1
#{バージョン0}
#opendb
#クリア
#.ルノ:= 72
#.infno:=1
#.tid.noel := 101
#.tid.info:=64
#.tid.setnr:=1225              <---(1225番号が変更されます)
#.typeidm:=1
#.ソーステーブル:= 2
#writedb     
#クリア
#.ルノ:= 72
#.infno:=205
#.tid.noel := 101
#.tid.info:=76
#.tid.setnr:=5625              <---(5625番号が変更されます)
#.typeidm:=1
#.ソーステーブル:= 2
#writedb
#$EOJ

file2正しい項目があります。

#.tid.info:=3345              <---(この番号を入力したいと思います。ファイル164の代わりに)
#.tid.setnr:=1254              <---(この番号を入力したいと思います。ファイル11225の代わりに)
#.tid.info:=5567              <---(この番号を入力したいと思います。ファイル176の代わりに)
#.tid.setnr:=9056              <---(この番号を入力したいと思います。ファイル15625の代わりに)

file1からのデータに基づいて変更したいと思いますfile2

頑張りました sed "s/tid.setnr := 1225/tid.setnr := 1254/g" file1 > modified_file1

しかし、これを手動で実行したくありません。スクリプトで新しい値と値を読み取って変更するようにtid.infoしたいとtid.setnr思いfile2ますfile1file2には、等が含まれています。file1tid.infofile2file1tid.setnr

ベストアンサー1

GNU sed R コマンドを使用します。

sed -e 's/^#.tid.setnr :=.*//;tA;b;:A;R file2' -e 'd' file1

おすすめ記事