sample_file:Suchen und Ersetzen Einzeiler erhalten Zeilenumbrüche
this is a test line!
this is a test line!
this is a test line!
this is a test line!
Ich bin ein Perl-Einzeiler mit Text wie folgt zu ersetzen:
perl -pi -e 's{this(.*)\s}{\n\1\n}i && s{.*\n}{}' sample_file
Der this(.*)\s
Teil und \1
Teil sind Variable und ich kann das nicht ändern (es kommt von Benutzereingaben).
Mein Problem ist, dass ich den {\n\1\n}
Teil abhängig davon anpassen muss, ob die erste Regex das Newline-Zeichen enthält.
Zum Beispiel, wenn die erste Regex ist {this(.*)\s}
Ich brauche {\n\1\n}
, aber wenn die erste wie {(.*)a test}
ist ich brauche {\n\1}
.
Wie kann ich überprüfen, ob das Newline-Zeichen verloren ist, und es bei Bedarf zurückstellen?
Es wird nicht an erster Stelle funktionieren - '-pi' wird Ihr Ding trotzdem Zeile für Zeile durchlaufen lassen. – Sobrique
Sie beginnen am falschen Ort und Ihre Frage ist irreführend. Ich schlage vor, dass Sie eine andere Frage stellen, zeigen, was Sie versucht haben, und beschreiben Sie die Transformation, die Sie auf Ihre Datei anwenden möchten. – Borodin
Sie sollten Ihre Benutzer wirklich nicht bitten, Regex-Muster einzugeben! – Borodin