Datumteil in einem String umformatieren

Datum: 2004-06-10
Quelle: debian-user-german

Worum ging es?

In einem String der Form TTMMJJJJ HHMM soll das Datum in die leichter zu sortierende Form JJJJMMTT umgebaut werden.

Code
echo "08062004 1811" | sed -r \
's/([0-9]{2,2})([0-9]{2,2})([0-9]{4,4}) /\3\2\1-/'
Beschreibung

Die Option -r des sed schaltet auf erweiterte reguläre Ausdrücke um, sonst wäre das ein ziemlicher Klammerverhau ;-). Das Pattern beschreibt die Zeichenfolge: 2 Ziffern, dann nochmal 2 Ziffern, dann 4 Ziffern, dann ein Leerzeichen. Die Gruppen werden in den Haltepuffern 1..3 gespeichert und dann umgekehrt wieder ausgegeben (\3\2\1). Resultat: 20040608-1811