ich einige Probleme mit dem Befehl sed mit:
Ich möchte in einem String, einen Apostroph durch zwei Apostroph
Hier ist meine Zeichenfolge ersetzen:Räume halten, wenn sed Befehl in Kornshell-Skript
04CA07807800106109XE00187200000081960 NI 0780643442 178'0700
habe ich diese sed Befehl den Apostroph zu ersetzen:
line=`echo $line | sed "s/'/''/g"`
Das Ergebnis ist
04CA07807800106109XE00187200000081960 NI 0780643442 178''0700
Wie Sie sehen können, wird das einfache Zitat korrekt durch zwei einfache Anführungszeichen ersetzt.
Aber ich habe alle Leerzeichen zwischen jedem Zeichen meiner Zeichenfolge verloren und ich muss sie wirklich behalten.
Gibt es eine Möglichkeit, diese Räume mit dem Befehl sed zu behalten?
Ich versuchte mit einem tr-Befehl und ich habe das gleiche Ergebnis.
Vielen Dank für Ihre Hilfe.
BTW, 'printf '% s \ n'" $ line "' ist eigentlich ein bisschen korrekter als 'echo" $ line "' (was selbst viel korrekter ist als 'echo $ line') im Umgang mit arbitrary Eingabe - siehe den Abschnitt APPLICATION USAGE von http://pubs.opengroup.org/onlinepubs/009604599/utilities/echo.html –
... btw, http://shellcheck.net/ hätte diesen Fehler für Sie ohne gefunden Menschen involvieren müssen. –
Ich wusste nichts von diesem Zeug. Zur Kenntnis genommen. Vielen Dank ! – Green