sed 's/[long1][long2]/[long3][long4]/' file.txt
Ich möchte diesen Befehl auf mehrere Zeilen aufteilen - etwa so:
sed 's/
[long1]
[long2]
/
[long3]
[long4]
/' file.txt
Das Verwenden \
oder Trennen von Zeichenfolgen hat nicht funktioniert.
/x
Modifikator für Substitution.Antworten:
Sie können eine lange Zeichenfolge in Bash-Variablen speichern und dann den folgenden
sed
Befehl verwenden:Wenn Sie verwenden können
perl
, können Sie mit demx
Modifikator ein langes Muster unterbrechen:quelle
sed "s/$string/$replace/" file.txt
ist gut.replace=
.Das Aufteilen auf mehrere Zeilen mit Backslash funktioniert, wenn keine neuen Zeilen eingerückt sind.
Getestet auf Cygwin mit GNU sed 4.2.2
quelle
GNU sed version 4.2.1
und es funktioniert nicht.Ein anderer Aspekt:
Wie wartbar sind die
[long]
oben genannten Elemente?Je kürzer und eindeutiger Sie die Klauseln aufbewahren können, desto leichter können sie im Laufe der Zeit geändert und erweitert werden, und (sed-external) Fakten ändern sich um die von ihnen bereitgestellte Funktion.
z.B
... könnte etwas sein, das man anstreben und bevorzugen sollte.
quelle
Sie können dies auch folgendermaßen aufteilen:
Oder vielleicht wie:
Oder mit einem Heredoc:
quelle