
現在、ファイル内の特定のフレーズに一致し、そのファイルのすべての行を別のファイルの全文に置き換える 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