テキストファイルf1の$ Elements $と$ EndElements $の間の内容を別のファイルf2のデータに置き換えたいと思います。
f1の内容は、単に次のように与えられる。
$Elements$
3
1
5
7
$EndElements$
f2の内容は次のとおりです。
1 65 71
2 32 87
3 39 98
4 41 63
私が思いついた最後のものは次のとおりです。
$Elements$
1 65 71
2 32 87
3 39 98
4 41 63
$EndElements$
これを行うには、stackexchangeページでいくつかのsedコードを試しました。 (コードをコピーしましたが、ウィンドウが開いていないため、直接リンクを提供できませんでした。申し訳ありません。)
lead='^\$Elements\$$'
tail='^\$EndElements\$$'
# f2 is the file where the information
# to replace is kept in
sed -e "/$lead/,/$tail/{ /$lead/{p; r insert_file
> }; /$tail/p; d }" f2
これはうまくいきません。基本的には何もしません。
ベストアンサー1
そしてed(1)
:
echo -e '/\$Elements\$/+1,/\$EndElements\$/-1d\n.-1r f2\nw' | ed -s f1
詳細:
/\$Elements\$/+1,/\$EndElements\$/-1
$Elements$
との間の一致線$EndElements$
d
その行を削除.-1
今上の行$EndElements$
r f2
ファイルを読むf2
w
結果を作成します。