sedを使用して最初に一致するテキストブロックを置き換えたいです。

sedを使用して最初に一致するテキストブロックを置き換えたいです。

数百行のスクリプトがあり、検索と置換コマンドが機能し、複数の場所から削除されます。

置き換えるテキストは別のファイルにあり、検索と置換は完全に機能しますが、残念ながら、ブロックテキストの最初のインスタンスだけを置き換えたいと思います。

ORIGINAL_FILE TEXT_FILE NEW_FILE

RECOMMENDEDとSTATICの間のすべてのテキストをTEXT_FILEの内容に置き換えます。

sed -n -e "1,/RECOMMENDED/ p" -e "/STATIC/,$ p" -e "/RECOMMENDED/ r $TEXT_FILE" $ORIGINAL_FILE >$NEW_FILE

私が言ったように、これはうまくいきますが、RECOMMENDEDとSTATICを使用できる場所はいくつかあり、最初のインスタンスだけを変更したいと思います。

どんな助けでも大変感謝します。

ベストアンサー1

これにより:

sed -n -e '1,/RECOMMENDED/ p' \
       -e '/STATIC/,$ {p;d;}' \
       -e "/RECOMMENDED/ r $TEXT_FILE" < "$ORIGINAL_FILE" > "$NEW_FILE"

その後、行の一致後に一致は/RECOMMENDED/ありません。/STATIC/D印刷して削除してください。

おすすめ記事