Wie kann ich diesen SED-Befehl portabler machen?

Wie kann ich diesen SED-Befehl portabler machen?

Ich verwende den folgenden sedBefehl:

cat version | sed -e 's/[0-9][0-9][0-9][0-9][0-9:M]*-[abp]/Ver\n/'

Das normalisiert sich folgendermaßen:

4330M-p  ->  Ver<newline>

Dies funktioniert gut mit GNU SED, aber mit BSD SED auf Mac OS X wird aus \n Folgendes n:

4330M-p  ->  Vern

Um eine Ausgabe, die eine Versionsnummer enthält, die sich im Laufe der Zeit ändert, in eine statische Zeichenfolge zu normalisieren, gefolgt von einem Zeilenumbruch. Dies wird als Teil von Tests verwendet, bei denen die Ausgabe nach der sedVerarbeitung mit einer bekannten goldenen Datei verglichen wird. diffWir möchten keine Fehler aufgrund einer Änderung der Versionsnummer und müssen für unsere Zwecke außerdem einen Zeilenumbruch hinzufügen.

Wie kann ich durch eine Zeichenfolge ersetzen, die eine neue Zeile auf eine Weise hinzufügt, die sowohl auf der GNU- als auch der BSD-Version von funktioniert sed, oder sollte ich einfach GNU sedauf Mac OS X installieren, da dies nicht möglich ist?

Antwort1

Sie können in Ihrem Skript einen wörtlichen Zeilenumbruch einfügen, etwa so:

cat version | sed -e 's/[0-9][0-9][0-9][0-9][0-9:M]*-[abp]/Ver\
/'

verwandte Informationen