elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Cambiar separador de campo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Cambiar separador de campo  (Leído 2,526 veces)
morsas

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Cambiar separador de campo
« en: 17 Septiembre 2013, 19:55 pm »

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 Desconectado

Mensajes: 111


Ver Perfil
Re: Cambiar separador de campo
« Respuesta #1 en: 17 Septiembre 2013, 22:56 pm »

Aunque no has determinado que lenguaje de scripting quieres programarlo en batch seria algo así:

Código:
@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 Desconectado

Mensajes: 3


Ver Perfil
Re: Cambiar separador de campo
« Respuesta #2 en: 18 Septiembre 2013, 05:47 am »

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 Desconectado

Mensajes: 111


Ver Perfil
Re: Cambiar separador de campo
« Respuesta #3 en: 18 Septiembre 2013, 07:24 am »

Mira a ver si así te sirve, a mi me funciona bien. Para introducir el archivo arrástralo sobre la ventana de la consola.

Código:
@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 Conectado

Mensajes: 9.788



Ver Perfil
Re: Cambiar separador de campo
« Respuesta #4 en: 18 Septiembre 2013, 12:04 pm »

Te aconsejo que utilices un lenguaje con soporte para reemplazar mediante expresiones regulares (es decir, cualquier otro lenguaje menos Batch).

Código:
(\s{1})[^.]

Puedes utilizar el subgrupo 1 de ese RegEx.

Saludos!
En línea

morsas

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Cambiar separador de campo
« Respuesta #5 en: 19 Septiembre 2013, 17:36 pm »

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 Desconectado

Mensajes: 111


Ver Perfil
Re: Cambiar separador de campo
« Respuesta #6 en: 20 Septiembre 2013, 11:27 am »

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.

Código:
@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

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Campo de texto
PHP
Kizar 2 2,362 Último mensaje 17 Octubre 2007, 18:48 pm
por Kizar
VB6: ComboBox con "Separador" de texto « 1 2 3 »
Programación Visual Basic
ProgramadorVB 21 9,108 Último mensaje 27 Agosto 2010, 20:40 pm
por ProgramadorVB
Internet en el campo
Redes
martinillou 1 2,517 Último mensaje 2 Junio 2013, 21:05 pm
por HdM
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines