あるファイルの行を別のファイルの行に置き換える

あるファイルの行を別のファイルの行に置き換える

ファイルの一部(たとえば、mからnまでの行)を別のファイルの行に置き換える方法が気になります。良い方法でやってください。

しかし、この部分は大きなものの小さな部分になるので、エディタを使用したくありません。

ベストアンサー1

file1の3行から5行をfile2の3行から5行に置き換えるには、次のようにします。

ed -s file1 <<< $'3,5d\n2r !sed -n 3,5p file2\nwq'

柔軟性を高めるには:

start=3 end=5
printf '%d,%dd\n%dr !sed -n %d,%dp file2\nwq\n' $start $end $((start - 1)) $start $end | \
  ed -s file1

どちらの方法も同じ目標を達成します。つまり、file2の行を使用してfile1をスクリプトとして編集します。

edコマンドは次のとおりです。

  • 3,5d- 3〜5行削除
  • 2r !sed...- sedコマンドの出力を取得して行に追加します。2
  • sed -n 3,5p file2p--file2の3〜5行のみ印刷
  • wq-wファイルをディスクに書き戻してq終了します。

おすすめ記事