sed を使用して二重スラッシュで始まる特定の行を一致させる

sed を使用して二重スラッシュで始まる特定の行を一致させる

現在、ファイル内の特定のフレーズに一致し、そのファイルのすべての行を別のファイルの全文に置き換える sed コマンドがあります。これは、「### この行の後のすべてを置換 ###」というフレーズに有効です。

sed -n -e '1,/^### REPLACE EVERYTHING AFTER THIS LINE ###$/{ p; d; }' \
       -e 'r replacement_file.txt' \
       -e 'q' original_file.txt > original_file.txt.new &&
mv original_file.txt.new original_file.txt

このコマンドはテキストファイルでは機能しますが、JavaScriptスタイルのコメントを含むファイルを置き換える必要があるため、少し問題がありました。一致させようとしている新しい行/フレーズは次のようになります(一致させたいことに注意してください)。これ特定のコメント(二重スラッシュで始まるすべてのコメントではありません):

//REPLACE AFTER THIS

現在、二重スラッシュをエスケープできず、問題が発生しています。バックスラッシュを使用して 2 つの文字をエスケープしようとしましたが、うまくいきませんでした。現在の (機能しない) コマンドは次のとおりです。

sed -n -e ‘1,/^\/\/REPLACE AFTER THIS$/{ p; d; }’\ 
       -e 'r replacement_file.txt' \
       -e 'q' original_file.txt > original_file.txt.new && mv original_file.txt.new original_file.txt

前もって感謝します。

答え1

コメントをくださった方々に感謝します。非 ASCII 引用符を修正したことに加えて、動作するコマンドは次のとおりです。

sed -n -e '1,\|^//REPLACE TEST$|{ p; d; }' \
    -e 'r replacement_file.txt' \
    -e 'q' original_file.txt > original_file.txt.new && mv original_file.txt.new original_file.txt

関連情報