Mögliche Lösung
sed 's/^....-\(..\)-\(..\)/\2.\1/'
Diese mehreren Punkte sind möglicherweise nicht elegant. Dem Befehl ist es egal, ob es sich um Zahlen handelt. Es ist egal, ob in der ersten "Spalte" noch etwas mehr ist. Diese Probleme können mit einem komplexeren Ansatz behoben werden, aber in seiner aktuellen Form ist der Befehl recht unkompliziert.
Der allgemeine Befehl sed 's/A/B/'
ersetzt das Muster A
durch B
höchstens einmal pro Zeile.
Wo A
in diesem Fall besteht aus:
^
- der Anfang einer Linienmarkierung....
- genau vier Zeichen,-
- wörtlich-
,(..)
- genau zwei Zeichen, auf die später verwiesen wird\1
,-
- wörtlich-
,(..)
- genau zwei Zeichen, auf die später verwiesen wird\2
.
Und B
ist
\2
- was auch immer war in der zweiten()
inA
,.
- wörtlich.
,\1
- was auch immer war in dem ersten()
inA
.
Zusätzlich (
und )
werden von entkommen \
.
Um eine Datei zu verarbeiten, fügen Sie sie als letztes Argument hinzu. Um eine Datei an Ort und Stelle zu bearbeiten -i
, verwenden Sie z
sed -i 's/^....-\(..\)-\(..\)/\2.\1/' myfile.txt