ファイルの一部(たとえば、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 file2
p
--file2の3〜5行のみ印刷wq
-w
ファイルをディスクに書き戻してq
終了します。