ubuntuusers.de

Zeichen in String austauschen

Status: Gelöst | Ubuntu-Version: Server 16.04 (Xenial Xerus)
Antworten |

gnude

Avatar von gnude

Anmeldungsdatum:
11. Juli 2014

Beiträge: 843

Hallo ich möchte gern in einem String, der mir als Shell-Variable vorliegt ein Zeichen gegen ein anderes tauschen. Konktret geht es mir um ein Datum. Es liegt im folgenden Format vor: 01.01.2016 und soll umgewandelt werden in 01/01/2016 Kann man das mit einem kurzen Befehl hinbekommen? Ich denke mal man muss "sed" dafür bemühen, ich weiss aber nicht genau wie... Kann mir jemand helfen?

phunter88

Avatar von phunter88

Anmeldungsdatum:
17. April 2012

Beiträge: 6

Wohnort: Thüringen

Guten Morgen gnude,

ja das funktioniert mit sed.

1
2
Befehl:                           sed 's/foo/bar/g'
Die Lösung für dein Problem:      sed 's/.///g'

Die Erklärung, der Punkt wird gegen ein Slash getauscht. sed 's/.///g'

Hier nochmal eine Hilfe zu "sed"

http://sed.sourceforge.net/sed1line_de.html

mfg

TausB

Avatar von TausB

Anmeldungsdatum:
26. November 2009

Beiträge: 1570

Wohnort: Terra incognita

Es geht auch ohne sed(!):

1
2
3
a="01.01.2016"
echo "$a"
echo "${a//./\/}"

gnude

(Themenstarter)
Avatar von gnude

Anmeldungsdatum:
11. Juli 2014

Beiträge: 843

Die sed-freie Lösung ist mir am liebsten aus Performancegründen ... THX 👍

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17625

Wohnort: Berlin

phunter88 schrieb:

ja das funktioniert mit sed.

1
2
Befehl:                           sed 's/foo/bar/g'
Die Lösung für dein Problem:      sed 's/.///g'

Die Erklärung, der Punkt wird gegen ein Slash getauscht. sed 's/.///g'

Sicher nicht. Erstens ist der Punkt der Platzhalter für jedes Zeichen, also muss man ihn maskieren. Zweitens ist der Slash der Pattern/Replacement-Trenner und muss ebenfalls maskiert werden:

1
2
date | sed "s/./\//g"
////////////////////////////
1
2
date | sed "s/\./\//g"
Mo 21/ Nov 09:13:56 CET 2016

Man auch gleich einen anderen Trenner benutzen:

1
2
date | sed "s-\.-/-g"
Mo 21/ Nov 09:15:04 CET 2016

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17625

Wohnort: Berlin

Was ich noch sagen wollte, phunter88: Probier Deine Tipps aus, bevor Du sie postest - alles was man nicht überprüft hat, kann man sagen, ist falsch und klappt nicht. Man arbeitet sonst länger mit Deinen Fehlern als der ursprünglichen Frage. Wenn die Korrektoren ebenso schlampig arbeiten wie Du wird man dann nie fertig.

Antworten |