Autor
|
Tema: (SOLUCIONADO) Ayuda para reemplazar palabras en un .txt con batch usando Sed (Leído 11,214 veces)
|
miguel088
Desconectado
Mensajes: 8
|
Buenos días, soy novato en esto de los scripts y necesitaría vuestra ayuda. Os cuento, tengo un txt similar a este: location,day name,high,low,degrees unit,icon.png,windspeed,windspeed unit,wind_dir LEMD,Friday,17,5,C,4.png,5,Kph,W LEMD,Saturday,14,6,C,4.png,4,Kph,NW LEMD,Sunday,16,7,C,2.png,4,Kph,NNW LEMD,Monday,21,9,C,1.png,4,Kph,N LEMD,Tuesday,21,8,C,1.png,4,Kph,N LEMD,Wednesday,18,5,C,1.png,5,Kph,NNE LEMD,Thursday,18,7,C,1.png,3,Kph,NE Lo que necesitaría es que a través de un batch traducir los días de la semana a castellano y quede como esto, pero en otro txt diferente: location,day name,high,low,degrees unit,icon.png,windspeed,windspeed unit,wind_dir LEMD,Viernes,17,5,C,4.png,5,Kph,W LEMD,Sábado,14,6,C,4.png,4,Kph,NW LEMD,Domingo,16,7,C,2.png,4,Kph,NNW LEMD,Lunes,21,9,C,1.png,4,Kph,N LEMD,Martes,21,8,C,1.png,4,Kph,N LEMD,Miércoles,18,5,C,1.png,5,Kph,NNE LEMD,Jueves,18,7,C,1.png,3,Kph,NE He probado con este codigo: sed.exe -e "s/Friday/Viernes/" TIEMPO.txt >TIEMPOSCAS.txt Y funciona, instalando la aplicación Sed en mi pc según he leído en algún hilo antiguo del foro. El problema es, que no he conseguido encontrar la solución, que me sustituya en un solo comando todas los días de la semana de todas las lineas y no solo uno como en el ejemplo. He probado distintas cosas, separar los datos con dobles comillas o con tuberias...pero ninguno me ha funcionado. Estoy seguro que es alguna tontería y alguien mas capacitado que yo seguramente los sepa, por eso recurro a vosotros. Espero que alguien me pueda ayudar. Muchas gracias de antemano y un saludo.
|
|
« Última modificación: 11 Noviembre 2013, 15:43 pm por miguel088 »
|
En línea
|
|
|
|
Almapa
Desconectado
Mensajes: 111
|
Solo puede ser un comando?
|
|
|
En línea
|
|
|
|
miguel088
Desconectado
Mensajes: 8
|
Solo puede ser un comando?
O en varios, me explique mal, me referia a hacerlo en una sola acción. Pero se puede utilizar todos los comandos que hagan falta.
|
|
|
En línea
|
|
|
|
mad_soft
Desconectado
Mensajes: 16
|
Ya lo habrás pensado y no será lo que pidas, pero ¿Porque no creas un script que lo haga? pega tantas lineas como días quieras remplazar y luego ejecutas el script #!/bin/bash sed.exe -e "s/Friday/Viernes/" TIEMPO.txt >TIEMPOSCAS.txt
|
|
|
En línea
|
SuSE 13.2 + Kernel 3.16
|
|
|
miguel088
Desconectado
Mensajes: 8
|
Ya lo habrás pensado y no será lo que pidas, pero ¿Porque no creas un script que lo haga? pega tantas lineas como días quieras remplazar y luego ejecutas el script #!/bin/bash sed.exe -e "s/Friday/Viernes/" TIEMPO.txt >TIEMPOSCAS.txt
Lo pensé y lo probé, pero el problema es que me traducia solo la ultima linea, ya que se va ejecutando el comando sobre el txt original y en el txt resultante solo salia traducida la última linea. Imagino que habrá alguna forma (que desconozco) es que dentro de ese comando sed se puedan meter todas las traducciones.
|
|
|
En línea
|
|
|
|
Almapa
Desconectado
Mensajes: 111
|
Esto en batch funciona, mira a ver si te sirve: @echo off cls Setlocal EnableDelayedExpansion set /p archivo="Arrastra el archivo a modificar: " for /f "tokens=*" %%a in ('type %archivo%') do (call :cambiar %%a) :cambiar set var=%* if %2==Monday (echo %var:Monday=Lunes%>>nuevo.txt) else (if %2==Tuesday (echo %var:Tuesday=Martes%>>nuevo.txt) else (if %2==Wednesday (echo %var:Wednesday=Miércoles%>>nuevo.txt) else (if %2==Thursday (echo %var:Thursday=Jueves%>>nuevo.txt) else (if %2==Friday (echo %var:Friday=Viernes%>>nuevo.txt) else (if %2==Saturday (echo %var:Saturday=Sábado%>>nuevo.txt) else (if %2==Sunday (echo %var:Sunday=Domingo%>>nuevo.txt) else (echo %var%>nuevo.txt))))))) GOTO :eof Un saludo
|
|
« Última modificación: 9 Noviembre 2013, 14:52 pm por Almapa »
|
En línea
|
|
|
|
mad_soft
Desconectado
Mensajes: 16
|
claro, porque el resultado del cambio se guarda en tiemposcas.txt y en la siguiente linea vuelves a comprobar tiempo.txt con lo que el cambio anterior no está hecho. Haz una copia del archivo en cada instruccion sed, o juega con dos ficheros. #!/bin/bash sed.exe -e "s/Monday/Lunes/" TIEMPO.txt >TIEMPOSCAS.txt cp TIEMPOSCAS.txt TIEMPO.txt sed.exe -e "s/Thuesday/Martes/" TIEMPO.txt >TIEMPOSCAS.txt ...
o bien cambiando los 2 archivos. #!/bin/bash sed.exe -e "s/Monday/Lunes/" TIEMPO.txt >TIEMPOSCAS.txt sed.exe -e "s/Thuesday/Martes/" TIEMPOSCAS.txt >TIEMPO.txt sed.exe -e "s/Wednesday/Miercoles/" TIEMPO.txt >TIEMPOSCAS.txt ....
|
|
|
En línea
|
SuSE 13.2 + Kernel 3.16
|
|
|
miguel088
Desconectado
Mensajes: 8
|
Muchísimas gracias a los dos, parece que funciona casi bien Solo me queda una ultima cuestión, en el caso de que quiera traducir al contrario o a otro idioma desde el castellano, como el Miércoles y el Sábado tienen tildes no me coge el cambio: Ejemplo: sed.exe -e "s/Miércoles/mercredi/" TIEMPOCAS.txt >TIEMPOFRANCES.txt En este caso, me cambia el resto de días, pero los que llevan tilde no me los reemplaza, sabéis por que puede ocurrir? Muchísimas gracias a todos de verdad. Un saludo!
|
|
|
En línea
|
|
|
|
|
miguel088
Desconectado
Mensajes: 8
|
Efectivamente, lo datos de origen que me pasan por FTP están formato UTF y para el software final necesita que los datos este en formato ANSI y antes de llegar a la traducción tengo otro bat creado que transforma todos los txt de utf a ansi.
El problema es que el txt a traducir esta si o si en ansi.
No se podría realizar la traducción de las tildes con el formato ANSI?
Perdonar por mi ignorancia, que en estos campos me pierdo bastante..
Gracias de antemano!
Un saludo.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
ayuda! clave de registro de 2 palabras(solucionado)
Programación Visual Basic
|
guidosl
|
2
|
2,138
|
2 Abril 2009, 14:57 pm
por guidosl
|
|
|
(Solucionado) [BATCH] Problema usando SED.exe
Scripting
|
Eleкtro
|
5
|
4,502
|
7 Diciembre 2011, 17:06 pm
por Eleкtro
|
|
|
Ayuda con ya sea usando BATCH o VBS
Scripting
|
lendet
|
2
|
2,646
|
3 Marzo 2012, 05:03 am
por lendet
|
|
|
(Solucionado) [Batch] Como reemplazar el caracter "%" dentro de una variable...?
Scripting
|
Eleкtro
|
8
|
14,874
|
20 Marzo 2012, 16:16 pm
por Eleкtro
|
|
|
Calculo de frecuencias de palabras usando dispersio con tabla HASH cerrada
Programación C/C++
|
falcao999
|
3
|
4,160
|
5 Diciembre 2012, 19:13 pm
por 0xDani
|
|