Solución posible
sed 's/^....-\(..\)-\(..\)/\2.\1/'
Estos puntos múltiples pueden no ser elegantes; al comando no le importa si se trata de números; no importa si hay algo más en la primera "columna". Estos problemas pueden solucionarse con un enfoque más complejo, pero en su forma actual, el comando es bastante sencillo.
El comando general sed 's/A/B/'
reemplaza patrón A
con B
, como máximo una vez por línea.
Dónde A
en este caso consiste en:
^
- el comienzo de un marcador de línea,
....
- exactamente cuatro caracteres,
-
Literal -
,
(..)
- exactamente dos personajes referenciados más tarde con \1
,
-
Literal -
,
(..)
- exactamente dos personajes referenciados más tarde con \2
.
Y B
es
\2
- lo que haya en el segundo ()
en A
,
.
Literal .
,
\1
- Lo que haya sido en el primero. ()
en A
.
Adicionalmente (
y )
son escapados por \
.
Para procesar un archivo agréguelo como último argumento. Para procesar un archivo en uso use -i
, p.ej.
sed -i 's/^....-\(..\)-\(..\)/\2.\1/' myfile.txt