Ich schreibe Shell-Skripte für meinen Server, bei dem es sich um ein Shared Hosting handelt, auf dem FreeBSD ausgeführt wird. Ich möchte sie auch lokal auf meinem PC mit Linux testen können. Daher versuche ich, sie portabel zu schreiben, sed
sehe aber keine Möglichkeit, dies zu tun.
Ein Teil meiner Website verwendet generierte statische HTML-Dateien. Diese Sed-Line fügt nach jeder Regeneration den korrekten DOCTYPE ein:
sed -i '1s/^/<!DOCTYPE html> \n/' ${file_name.html}
Es funktioniert mit GNU sed
unter Linux, aber FreeBSD sed
erwartet , dass das erste Argument nach der -i
Option eine Erweiterung für die Sicherungskopie ist. So würde es aussehen:
sed -i '' '1s/^/<!DOCTYPE html> \n/' ${file_name.html}
GNU sed
erwartet jedoch wiederum, dass der Ausdruck unmittelbar danach folgt -i
. (Es sind auch Korrekturen für die Behandlung von Zeilenumbrüchen erforderlich, die hier bereits beantwortet wurden. )
Natürlich kann ich diese Änderung in meine Serverkopie des Skripts aufnehmen, aber das würde z. B. meine Verwendung von VCS für die Versionierung durcheinander bringen. Gibt es eine Möglichkeit, dies mit sed vollständig portabel zu erreichen?
-i