Hallo ich möchte gern aus einem String einen inneren Teil entfernen, konkret geht es um ein Datum das ich vom langen Format (18.11.2016) in das kurze Format (18.11.16) umwandeln möchte. Gibt es einen einfachen Befehl um diese beiden Zeichen zu entfernen?
Mittleren Teil eines Strings entfernen
Anmeldungsdatum: Beiträge: 806 |
|
||
Projektleitung
Anmeldungsdatum: Beiträge: 12822 |
|||
Ehemalige
Anmeldungsdatum: Beiträge: 4403 Wohnort: Sachsen |
In einem Skript oder einfach so händisch in der Bash? Das Einfachste ist IMHO:
Das eignet sich natürlich nicht für ein Skript, denn dort können potentiell auch Daten vor 2000 oder nach 2099 auftreten. In so einem Fall würde ich es also eher so machen: echo $d | sed -r "s/[0-9]{2}([0-9]{2})$/\1/" |
||
Anmeldungsdatum: Beiträge: 2503 |
Noch eine Möglichkeit, die eher knapp ist und davon abhängt, dass dein Eingangsformat wirklich immer $ d='20.03.1975' $ echo "$d" | sed -r 's/..(..)$/\1/' 20.03.75 @rklm: Wie würde man das mit |
||
Ehemalige
Anmeldungsdatum: Beiträge: 4403 Wohnort: Sachsen |
Mit date würde das so funktionieren:
|
||
Anmeldungsdatum: Beiträge: 7174 Wohnort: Wolfen (S-A) |
Da mit Deshalb würde ich einfach nur den Filter etwas schärfer machen: track@track:~$ echo Nr.20212044-am_18.11.2016 | sed -r 's/(([0-9]{2}\.){2})20([0-9]{2})/\1\3/' Nr.20212044-am_18.11.16 track@track:~$ echo Nr.20212044-am_18.11.2016 | perl -pe 's/(?<=(\d{2}\.){2})20(?=\d{2})//' Nr.20212044-am_18.11.16 Die Perl-Variante ist durch die Lookarounds etwas direkter - leider kennt LG, track Edit: track@track:~$ d=24.11.1975 track@track:~$ echo ${d%.*}.${d: -2:2} 24.11.75 track@track:~$ d=24.11.75 track@track:~$ echo ${d%.*}.${d: -2:2} 24.11.75 |
||
(Themenstarter)
Anmeldungsdatum: Beiträge: 806 |
Die im Nachtrag von "Track" genannte Lösung funktioniert sehr gut bei mir, die nutze ich. Vielen Dank ! 👍 |