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/'
searchkann \ns enthalten , um Zeilenumbrüche darzustellen
sedMultiliner.
-0setzt das Datensatztrennzeichen auf null, sodass die gesamte Datei auf einmal anstatt zeilenweise gelesen wird. -pLässt das Ergebnis nach der Ersetzung drucken. -emuss das nächste Argument als Ausdruck verwendet werden, und s/search/replace/ist dieser Ausdruck