Sí, antes de que alguien salte y me ataque con una horca, esta es una pregunta duplicada, pero las otras no funcionan para mí, así que ahora me lo pregunto.
Tengo un archivo CSV que tiene fechas en algún lugar de cada entrada. La dificultad añadida a la conversión es que a veces las fechas tendrán un solo dígito por días. Entradas de ejemplo:
abc,0,2,-2,3-16-1994
xyz,1,2,3,10-09-1994
Quiero algo, preferiblemente sed, para convertir esas entradas de datos para que se vean así:
abc,0,2,-2,1994-03-16
xyz,1,2,3,1994-09-10
He intentado:
sed 's|(..)-(..)-(....)|\3-\2-\1|'
Pero eso da un error y realmente no cubre los problemas del día de un solo dígito.
También probé:
awk -F - '{print $3$2$1}'
Esto en realidad tiene un efecto deseado, pero de nuevo, no realmente. El comando awk lo convierte, pero solo el mes y el año, y en lugar de volver a poner la fecha donde estaba, pone el mes y el año del comienzo de la línea, dejando la parte del día donde estaba originalmente.
¡Cualquier ayuda sería increíble!
Gracias por adelantado.
Editar
Se señaló acertadamente en los comentarios que cometí un error con mis ejemplos. Las fechas deben ser:
abc,0,2,-2,16-03-1994
xyz,1,2,3,2-05-1994
Con el resultado deseado siendo:
abc,0,2,-2,1994-03-16
xyz,1,2,3,1994-05-02
Lo siento chicos.