
Ich verwende den folgenden sed
Befehl:
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 sed
Verarbeitung mit einer bekannten goldenen Datei verglichen wird. diff
Wir 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 sed
auf 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\
/'