Backslash ist das Escape - Zeichen in sed
Mustern, so dass ein Literal Wagenrücklauf eingesetzt ist. Was Sie wollen, ist \\r
- ein umgekehrter Schrägstrich, gefolgt von einem Literal r
.
Wie man sed benutzt, um eine ganze Zeile durch eine andere mit Zeichen zu ersetzen
Die Datei enthält folgende Zeile 19
send -- "old@example.com\r"
Ich möchte die E-Mail ändern, dachte ich und kam dazu
sed -i.bak '19s/.*/send -- "new@example.com\r"/' ./a
es ändert sich Zeile 19, aber was ich bekomme, ist
"end -- "new@example.com
Was ist los und wie kann ich das beheben?
3 Antworten auf die Frage
Anstatt zu suchen und zu ersetzen, können Sie einfach die 19. Zeile ändern:
sed '19c\send -- "new@example.com\\r"'
Sie machen das schwieriger, als es sein muss - ändern Sie einfach die E-Mail-Adresse, nicht die gesamte Zeile. Demonstrieren:
$ echo 'send -- "old@example.com\r"' | sed 's/old@example\.com/new@example.com/' send -- "new@example.com\r"
Übrigens, Sie können optional den g
Modifizierer (global) am Ende des Befehls s///
command verwenden, wenn das Suchmuster in einer Zeile mehr als einmal vorkommt, und / oder den i
Modifikator (Fall ignorieren), wenn Sie eine Groß- / Kleinschreibung verwenden möchten, z verwenden beide: s/old@example\.com/new@example.com/ig
.
Auf jeden Fall würde Ihr Befehl dann so aussehen:
sed -i.bak '19s/old@example\.com/new@example.com/' ./a
Wenn Sie die genaue zu ändernde Zeilennummer nicht kennen, geben Sie einen regulären Ausdruck als Zeileadresse anstelle einer Zeilennummer an:
sed -i.bak '/^send.*old@example\.com/ s/old@example\.com/new@example.com/' ./a
Es ist noch einfacher ALLE Vorkommen von old@example.com in der Datei zu ändern. Geben Sie einfach keine Adresse an, und die Ersetzung erfolgt in jeder Zeile der Datei.
sed -i.bak 's/old@example\.com/new@example.com/' ./a
Verwandte Probleme
-
9
Was ist der Unterschied zwischen den Befehlen "su -s" und "sudo -s"?
-
4
Gutes freies Ubuntu Server-VMWare-Image benötigt
-
4
Was sind die Unterschiede zwischen den großen Linux-Distributionen? Werde ich es merken
-
2
Begrenzung der CPU-Auslastung für Flash in Firefox?
-
2
Wie kann ich mein Mikrofon unter Debian GNOME zum Laufen bringen?
-
2
Conky-Setups - Beispiele / Ideen?
-
3
Was sind die Unterschiede zwischen Linux Window Managern?
-
2
ThunderBird / Lichtsynchronisation mit SE k770i
-
4
Linux-Dateisystem
-
6
Vollbild-Flash langsam in KDE 4