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

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

現在のファイルの特定のフレーズと一致し、そのファイルのすべての行を他のファイルのフルテキストに置き換えるsedコマンドがあります。これは "### REPLACE EVERYTHING AFTER THIS LINE ###" フレーズに適用されます。

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

おすすめ記事