So ersetzen Sie ein Zeichen mit zwei Zeichen, die mit tr
Kann tr ersetzt ein Zeichen mit zwei Zeichen?
Ich versuche, ersetzen Sie "~" mit "~\n" " aber die Ausgabe nicht zu dem newline.
$ echo "asdlksad ~ adlkajsd ~ 12345" | tr "~" "~\n"
asdlksad ~ adlkajsd ~ 12345
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nein,
tr
wird speziell als Ersatz für ein einzelnes Zeichen durch ein einzelnes Zeichen (oder, je nach Kommandozeilen-Optionen, um Zeichen zu löschen oder zu ersetzen, läuft ein einzelnes Zeichen durch ein vorkommen.).sed
ist wahrscheinlich das beste Werkzeug für diese Besondere Aufgabe zu:(Beachten Sie, dass dies erfordert
sed
zu interpretieren, die spielfrei-n\n
Sequenz als ein neue-Zeile-Zeichen. GNU sed, aber POSIX nicht geben, außer innerhalb eines regulären Ausdrucks, und es gibt definitiv ältere Versionen vonsed
nicht.)könnten Sie gehen mit awk, lassen FS/OFS variable der job für Sie tun:
test mit deinem Beispiel:
nicht, sorry.
tr
soll transliterate ein Zeichen mit einem anderen.gibt es zahlreiche Optionen, aber ich würde
awk
, d.h.Ausgabe
/[~]/
, die kürzere form/~/
auch funktioniert. Die;1
am Ende ist nicht notwendig. (Oder ist es, für einige obskure alte Betriebssystem?)tr
nur 1 zu 1 übersetzung.Hier ist ein Weg, das zu tun, mit reinen Bash:
--Diese funktioniert perfekt, da die sed ein problem austauschen \n
|
anderswo.