Ich versuche, mit sed oder awk 5 Zeilen in einer smb-Datei zu ersetzen, aber ich habe keine Ahnung, wie ich mit den Zeilenumbrüchen umgehen soll.
Ich versuche, mit sed oder awk 5 Zeilen in einer smb-Datei zu ersetzen, aber ich habe keine Ahnung, wie ich mit den Zeilenumbrüchen umgehen soll.
Antworten:
Sed ist ziemlich schlecht darin, weil es eine Leitung nach der anderen betreibt. Die einzige anständige Technik, die ich jemals gesehen habe, ist diese , bei der die gesamte Datei im Haltepuffer von sed gespeichert und dann auf einmal bearbeitet wird:
sed -n '1h;1!H;${g;s/search/replace/;p;}'
Wenn Sie können, ist es viel einfacher, Perl zu verwenden, um dies zu erreichen:
perl -0pe 's/search/replace/'
search
kann \n
s enthalten , um Zeilenumbrüche darzustellen
sed
Multiliner.
-0
setzt das Datensatztrennzeichen auf null, sodass die gesamte Datei auf einmal anstatt zeilenweise gelesen wird. -p
Lässt das Ergebnis nach der Ersetzung drucken. -e
muss das nächste Argument als Ausdruck verwendet werden, und s/search/replace/
ist dieser Ausdruck