Autor
|
Tema: Cambiar separador de campo (Leído 2,812 veces)
|
morsas
Desconectado
Mensajes: 3
|
Hola tengo un archivo de texto cuyo delimitador de columnas es un espacio y necesito cambiarlo por una coma o barra vertical, es posible realizar esto? muestro el archivo como esta ahora:
05052013 20:10 12345 12310 12345678 00:00:24 5 05222013 10:15 12346 12311 5512345690 00:00:20 5 5800
y cómo necesito que quede:
05052013,20:10,12345,12310,12345678 ,00:00:24,5, 05222013,10:15,12346,12311,5512345690 ,00:00:20,5,5800
La columna mas "ancha" es de 20 caractéres
Saludos y muchas gracias de antemano.
|
|
|
En línea
|
|
|
|
Almapa
Desconectado
Mensajes: 111
|
Aunque no has determinado que lenguaje de scripting quieres programarlo en batch seria algo así: @echo off set /p documento1= Setlocal EnableDelayedExpansion for /f "tokens=*" %%a in ('type %documento1%') do (set var=%%a && (for %%g in (%%a) do (set var=!var: %%g=,%%g!)) && echo !var!>>documento2.txt)
Donde el documento1 es donde está lo que quieres cambiar y documento2.txt el documento de salida. Como verás está hecho para que lo cambie por una "," no por un "|". Un saludo!
|
|
|
En línea
|
|
|
|
morsas
Desconectado
Mensajes: 3
|
Una disculpa, el programa lo voy a realizar en DOS, ya lo corrí y no funciona, aparece la ventana de dos pero se queda estatica, sin ninguna leyenda.
|
|
|
En línea
|
|
|
|
Almapa
Desconectado
Mensajes: 111
|
Mira a ver si así te sirve, a mi me funciona bien. Para introducir el archivo arrástralo sobre la ventana de la consola. @echo off Setlocal EnableDelayedExpansion set /p documento1="Introduzca la ruta del archivo: " call :ruta documento1 for /f "tokens=*" %%a in ('type %documento1%') do (set var=%%a && (for %%g in (%%a) do (set var=!var: %%g=,%%g!)) && echo !var!>>!documento2!) echo Finalizado, el archivo modificado está en !documento2! pause exit
:ruta set documento2=%~d1%~p1%~n1_modificado.txt
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Conectado
Mensajes: 9.878
|
Te aconsejo que utilices un lenguaje con soporte para reemplazar mediante expresiones regulares (es decir, cualquier otro lenguaje menos Batch). Puedes utilizar el subgrupo 1 de ese RegEx. Saludos!
|
|
|
En línea
|
|
|
|
morsas
Desconectado
Mensajes: 3
|
Es correcto Almapa, ya funciona pero quedó un detalle, no pone la coma que debe ir al final de la primera linea: 05052013,20:10,12345,12310,12345678 ,00:00:24,5 05222013,10:15,12346,12311,5512345690 ,00:00:20,5,5800 05282013,10:10,12347,12312,5512345691 ,00:00:25,5,5700 crees que tenga solucion?
|
|
|
En línea
|
|
|
|
Almapa
Desconectado
Mensajes: 111
|
No se si habrás aprendido mucho con esto pero bueno, espero que por lo menos sepas que hace cada línea de código o de lo contrario te informes. @echo off Setlocal EnableDelayedExpansion set linea=0 set /p documento1="Introduzca la ruta del archivo: " call :ruta %documento1% for /f "tokens=*" %%a in ('type %documento1%') do ((set var=%%a) && set /a linea=!linea!+1 && (for %%g in (%%a) do (set var=!var: %%g=,%%g!)) && (if !linea!==1 (set var=!var!,)) && echo !var!>>!documento2!) echo Finalizado, el archivo modificado está en !documento2! pause exit
:ruta set documento2=%~d1%~p1%~n1_modificado.txt Un saludo.
|
|
|
En línea
|
|
|
|
|
|