
Ich habe derzeit einen sed-Befehl, der eine bestimmte Phrase in einer Datei abgleicht und alle Zeilen dieser Datei durch den vollständigen Text einer anderen Datei ersetzt. Dies funktioniert für die Phrase „### ALLES NACH DIESER ZEILE ERSETZEN ###“
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
Dieser Befehl funktioniert für Textdateien, aber da ich Dateien durch Kommentare im Javascript-Stil ersetzen muss, bin ich auf ein kleines Problem gestoßen. Die neue Zeile/Phrase, die ich abgleichen möchte, ist jetzt die folgende (und beachten Sie, dass ich abgleichen möchteDasbestimmter Kommentar, nicht alle Kommentare, die mit dem doppelten Schrägstrich beginnen):
//REPLACE AFTER THIS
Ich bin auf ein Problem gestoßen, da ich derzeit nicht in der Lage bin, den doppelten Schrägstrich zu maskieren. Ich habe versucht, die beiden Zeichen mit einem Backslash zu maskieren, aber das hat nicht funktioniert. Mein aktueller (nicht funktionierender) Befehl ist der folgende:
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
Dank im Voraus.
Antwort1
Vielen Dank an alle, die Kommentare abgegeben haben. Zusätzlich zur Korrektur des nicht-ASCII-Anführungszeichens ist hier der funktionierende Befehl:
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