Buenas
Estoy haciendo un script que trata un fichero de texto, y estoy atascado. Ya que tengo un par de campos del fichero separado por comas. Estos campos son fecha y queria sustituir los - separadores DD-MM-YYYY, por / DD/MM/YYYY
He intentado son sed, pero este me sustituye los - por / en todas las apariciones de las lineas, ya que despues de estos campos hay otros con -. Esto lo hice con:
sed 's/-/\//g' ficheroTratar
Tambien he probado con awk, pero en este no se como decir que la sustitucion sea solo en ciertos campos, (son $2, y $3).
Y si corto los campos con awk y los trato con sed
awk -F "," '{print $2,$3}' ficheroTratar | sed 's/-/\//g'
solo tengo esos dos campos, y no se como volverlos a insertar sustituyendo a los anteriores, ya que necesito el fichero con todos los campos y esos 2 sustituidos
Espero que podais echarme una mano, muchas gracias

hola... aca tenes la
hola...
aca tenes la solucion...
$ echo 'dd-mm-yyyy' |sed 's:-:/:g'
dd/mm/yyyy
Leete esto para ver otras opciones.. ademas de "man sed"
http://www.gentoo.org/doc/es/articles/l-sed2.xml
saludos
Gentoo + win7 >> Dell XPS M1530 - T8300 - 4gb - 8600gt 256
ubuntu >> Athon 2000+xp - 1gb - 6600gt 128bt
dd-wrt v24 >> linksys wrt54gl v1.1
putty ;-) >> N80 para controlarlos a todos jeje
No entiendo muy bien la
No entiendo muy bien la solucion y he revisado las paginas que me indicas.
Con echo 'dd-mm-yyyy', le pasa a sed la cadena dd-mm-yyyy, pero no entiendo para que.
De todas maneras poniendolo como me dices realiza sustituciones de - por / en toda la linea, no solo en los campos fecha, sino que cuando hay guiones tambien los sustituye.
Por favor alguien me podia
Por favor alguien me podia echar una mano, ya que estoy atascado.
intenta con esta linea: sed
intenta con esta linea:
lo que busca es un conjunto "11-11-" para identificar la fecha, creo que con esto será suficiente.
salu2
--
arraclan(@)gmail.com
"I'm not anti-social; I'm just not user friendly"
Arraclan, registered Linux user #378069, Ubuntu User #1422
No me ha servido, mira te
No me ha servido, mira te adjunto un ejemplo con el que estoy tratando:
$ cat prueba2
1,20-03-2001,20-03-2001,20-03-2001,Oscar,69556565,,,
2,2-03-21,20-03-2001,20-03-2001,Oscar,69556565,,
3,25/8/02,28/05/2009,31/03/2010,Daniel,6985566,
4,25-8-02,28-05-2009,31-03-2010,Daniel,6985566,,,,,,,
5,21-02-2001,13\03\03,Esto-esta-separado-con-guion
$ sed 's/\([1-9][1-9]\)-\([1-9][1-9]\)-/\1\/\2\//g' prueba2
1,20-03-2001,20-03-2001,20-03-2001,Oscar,69556565,,,
2,2-03-21,20-03-2001,20-03-2001,Oscar,69556565,,
3,25/8/02,28/05/2009,31/03/2010,Daniel,6985566,
4,25-8-02,28-05-2009,31-03-2010,Daniel,6985566,,,,,,,
5,21-02-2001,13\03\03,Esto-esta-separado-con-guion
Como puedes ver no ha hecho ninguna sustitucion.
Otra cosa que estaba intentado era cortar campos con awk | sustituir con sed, pero no se como devolverlos a su posicion.
Muchas gracias por la ayuda
perdón prueba ahora...puse 1
perdón prueba ahora...puse 1 en vez de 0 en el rango
veo que tienes muchos formatos de fechas, eso complica la cosa o es solo una prueba que has hecho?
salu2
--
arraclan(@)gmail.com
"I'm not anti-social; I'm just not user friendly"
Arraclan, registered Linux user #378069, Ubuntu User #1422
con este código me funciona
con este código me funciona en el ejemplo que me has mandado pruebalo y me cuentas:
salu2
--
arraclan(@)gmail.com
"I'm not anti-social; I'm just not user friendly"
Arraclan, registered Linux user #378069, Ubuntu User #1422
Mil gracias, ahora si que
Mil gracias, ahora si que funciona. Lo unico no me queda claro como funciona xq al buscar una cadena y sustituirla, o bien deberia sustituir toda la cadena por la nueva, o como me pasaba a mi que sustituia por ejemplo
20-03-2011 por 20-/03-/2011
Como puede ser que no pase esto...
es un poco dificil de ver
es un poco dificil de ver pero mas o menos en la expresión regular están marcados unos rangos (los números) con el caracter " \" que se usan en el último parámetro como variables de la forma "\1" "\2" para volver a formar el texto con los caracteres sustituidos...
sed 's/\([0-9][0-9]\)-\([0-9][0-9]\)-/\1\/\2\//g'
--
arraclan(@)gmail.com
"I'm not anti-social; I'm just not user friendly"
Arraclan, registered Linux user #378069, Ubuntu User #1422
Perfecto muchas gracias de
Perfecto muchas gracias de nuevo. Por fin he podido finalizar el script