Creacion de un archivo crv en Linux

Temas sobre programación ( php, c, sql, html, perl, python, ruby, java, bash, etc ) y recursos ( herramientas, frameworks, hosting, cms, etc )

Moderadores: akodo, maiku

Responder
soinel
Forista Nuevo
Forista Nuevo
Mensajes: 4
Registrado: Vie Abr 06, 2012 9:06 pm

Creacion de un archivo crv en Linux

Mensaje por soinel » Vie Abr 06, 2012 10:18 pm

Hola a todos necesito una ayudita, con la creacion de un archivo crv.

Tengo un archivo con el siguiente formato:


;CODIGO;REFERENCIA;IMPRESORA;P�G. IMAX�;; P.V.D.
;;;;;;
;;;;;;
;Cartuchos ¿½ para impresoras BROTHER� ;;;;;
;1004;TN04 BK;HL2700/ MFC9420 Negro;10.000;;46,3
;10041;TN04 C;HL2700/ MFC9420 Cyan;6.600;;46,3
;10042;TN04 M;HL2700/ MFC9420 Magenta;6.600;;46,3
;10043;TN04 Y;HL2700/ MFC9420 Amarillo;6.600;;46,3
;1252;CE252A;CP3520/ CP3525/ CM3530 Amarillo;7.000;;52,35
;1253;CE253A;CP3520/ CP3525/ CM3530 Magenta;7.000;;52,35
NEW 2-2012;100310;CE310A N�126A;Pro 100/ CP1020/ CP1025/ CP1025NW Negro;1.000;;21,56


Para preparar el fichero lo primero que hago es eliminar los espacios con sed '/^$/d' toner .
Luego elimino las lineas que contengan 3 ";" seguidos sed '/;;;/d' .
El siguiente paso buscamos 2 punto y coma ";;" y se sustituye por uno solo ";" sed 's/;;/;/g'
Ahora se cambiaran las comas por puntos. sed 's/,/./g'
Y por ultimo elimino el ; inicial de cada linea sed 's/^;//'


se quedaria algo asi:
13050;MLD 3050B;ML3050/ 3051N/ 3051ND Negro;8.000;42.79
11042;MLTD 1042S / ML 1660;ML1660/ 1661/ 1665/ 1666/ 1670/ 1861/ 1865/ 1865W/ SCX3200/ 3205 Negro;1.500;31.61
NEW 12-2011;11910;MLTD 1052L / ML1910;ML1910/ 1915/ 2525/ 2580/ SCX4600/ 4623/ 4623FN/ SF650 Negro;2.500;25.19
11640;MLTD 1082S / ML 1640;ML1640/ 1641/ 1642/ 1645 /2240/ 2241 Negro;1.500;23.57


Ahora lo que no se como hacerlo seria eliminar lo que se encuentre entre NEW y el primer ; por ejemplo
NEW 12-2011; que tendria que eliminarlo de las lineas que lo contengan.

La idea seria buscar la cadena que empiece por NEW hasta el primer ; y eliminarlo.


Gracias de antemano y saludos a todos.
Última edición por soinel el Sab Abr 07, 2012 12:16 am, editado 1 vez en total.
Avatar de Usuario
mcun
Administrador
Administrador
Mensajes: 3888
Registrado: Lun Abr 19, 2010 12:30 am
Ubicación: En una de las nalgas del culo del mundo (según la Bersuit Vergarabat)
Contactar:

Re: Hola a todos necesito una ayudita, con la creacion de un archivo crv

Mensaje por mcun » Vie Abr 06, 2012 11:49 pm

Hola soinel por favor edita el titulo y agrega información útil como por ejemplo el lenguage en el que tratas de implementar lo que sea que quieras implementar XDD

Para ser mas claro Hola a todos necesito una ayudita, es absolutamente irrelevante y no aporta nada a la descripción del problema, ademas de infringir las normas del foro.

Un titulo descriptivo seria algo como:

crear un archivo crv en python o xxx error al crear un archivo crv en Java

gracias
Los programadores de verdad no documentan. La documentación es para los idiotas que no pueden leer un volcado de memoria.

Trusted Network and Developer | Lee el Reglamento !! |WIKI-EL | Twitter @mr_mcun
Debian + TTY | ArchLinux + awesome | openSUSE + Gnome-Shell | Linux User #508809
Avatar de Usuario
t4rr1t0
Ganador CSEL 2011
Ganador CSEL 2011
Mensajes: 357
Registrado: Dom Dic 12, 2010 6:07 pm
Contactar:

Re: Hola a todos necesito una ayudita, con la creacion de un archivo crv

Mensaje por t4rr1t0 » Vie Abr 06, 2012 11:51 pm

NEW siempre va al comienzo de la linea?

No tengo mucha experiencia con sed, pero si NEW siempre esta al comienzo, una mezcla con cut te puede ayudar.

Código: Seleccionar todo

borrar=`grep NEW archivo| cut -d\; -f1`;sed "s/$borrar;//" archivo
salu2
soinel
Forista Nuevo
Forista Nuevo
Mensajes: 4
Registrado: Vie Abr 06, 2012 9:06 pm

Re: Hola a todos necesito una ayudita, con la creacion de un archivo crv

Mensaje por soinel » Sab Abr 07, 2012 2:37 pm

No necesariamente, en este caso si pero podría ir en otro campo por eso seria útil buscar la cadena que empiece por NEW hasta el siguiente ;

Saludos y gracias por tu rápida respuesta.

Editado -- Sab Abr 07, 2012 6:37 am --

No ha funcionado lo que me envias t4rr1t0

Código: Seleccionar todo

borrar=`grep NEW archivo| cut -d\; -f1`;sed "s/$borrar;//" archivo
tal cual no me funciona.

para almacenar en variable borrar lo hago sin las comillas si no no funciona

Código: Seleccionar todo

borrar= grep NEW toner | cut -d';' -f1
la siguiente parte es la que no funciona y no entiendo el por que¿?

Código: Seleccionar todo

sed 's/$borrar//' toner > toner3
he provado con $borrar , '$borrar' , "'$borrar'"

No entiendo ¿que error puede ser?

saludos
Avatar de Usuario
t4rr1t0
Ganador CSEL 2011
Ganador CSEL 2011
Mensajes: 357
Registrado: Dom Dic 12, 2010 6:07 pm
Contactar:

Re: Creacion de un archivo crv en Linux

Mensaje por t4rr1t0 » Sab Abr 07, 2012 6:07 pm

Copié los datos que pusiste para generar el archivo toner, corrí los comando que te indique con los nombres de archivos que tu indicas y no me dio ningun error.

Código: Seleccionar todo

borrar=`grep NEW toner| cut -d\; -f1`;sed "s/$borrar;//" toner > toner3
esta es mi salida (toner3)

Código: Seleccionar todo

cat toner3

;CODIGO;REFERENCIA;IMPRESORA;P�G. IMAX�;; P.V.D.
;;;;;;
;;;;;;
;Cartuchos ¿½ para impresoras BROTHER� ;;;;;
;1004;TN04 BK;HL2700/ MFC9420 Negro;10.000;;46,3
;10041;TN04 C;HL2700/ MFC9420 Cyan;6.600;;46,3
;10042;TN04 M;HL2700/ MFC9420 Magenta;6.600;;46,3
;10043;TN04 Y;HL2700/ MFC9420 Amarillo;6.600;;46,3
;1252;CE252A;CP3520/ CP3525/ CM3530 Amarillo;7.000;;52,35
;1253;CE253A;CP3520/ CP3525/ CM3530 Magenta;7.000;;52,35
100310;CE310A N�126A;Pro 100/ CP1020/ CP1025/ CP1025NW 
Negro;1.000;;21,56
No entiendo que te esta provocando el error. Estas usando bash u otra shell?
Por cierto, si quieres que la variable se expanda, entonces no debes usar comillas simples.

Salu2
soinel
Forista Nuevo
Forista Nuevo
Mensajes: 4
Registrado: Vie Abr 06, 2012 9:06 pm

Re: Creacion de un archivo crv en Linux

Mensaje por soinel » Sab Abr 07, 2012 7:26 pm

No lo entiendo yo utilizo una retro de debían que es solo consola no tiene parte gráfica.

Este codigo que me envías no funciona

Código: Seleccionar todo

borrar=`grep NEW toner| cut -d\; -f1`;sed "s/$borrar;//" toner > toner3
Tengo otros script hechos y siempre me ha tocado modificarlos por que algunas espresiones no funcionaba por ejemplo cut -d\; -f1 no funciona seria cut -d';' -f1

Que versión de Linux me recomiendas que sea sin consola gráfica que funcione bien y pese poco.??

Tengo virtualizado un ubuntu server 10 lo probare y si me funciona me cambio.

Saludos
Avatar de Usuario
akodo
Moderador
Moderador
Mensajes: 1457
Registrado: Mié Nov 28, 2007 8:00 am
Ubicación: En la X del explorer (pulse para llamar)

Re: Creacion de un archivo crv en Linux

Mensaje por akodo » Sab Abr 07, 2012 7:46 pm

Prueba a ver si funciona el siguiente código (ajústalo antes que no sé si funcionará)

Código: Seleccionar todo

sed 's/NEW[^;]*;//'
Básicamente, sustituyes el NEW, cualquier cosa que no sea ";" y finalmente el ";" por un carácter blanco.
Descargue el gestor de mp3 "Music Manager" -> ([url=http://ctrlalt.iespana.es]mmlf[/url])
Última versión del gestor "Music Manager" -> ([url=http://sourceforge.net/projects/jmusicmanager/]jmmm[/url])
soinel
Forista Nuevo
Forista Nuevo
Mensajes: 4
Registrado: Vie Abr 06, 2012 9:06 pm

Re: Creacion de un archivo crv en Linux

Mensaje por soinel » Dom Abr 08, 2012 2:10 am

t4rr1t0 esta es la distri de linux que tengo.

Linux XXXX 2.6.26-2-amd64 #1 SMP Tue Jan 25 05:59:43 UTC 2011 x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sat Apr 7 11:39:31 2012 from XXXX



Si pongo el script que me das mira lo que me da:

borrar=`grep NEW toner| cut -d\; -f1`;sed "s/$borrar;//" toner > toner3
sed: -e expresión #1, carácter 17: unterminated `s' command

Editado -- Sab Abr 07, 2012 6:10 pm --

Hola akodo si funciona me puedes explicar.

Código: Seleccionar todo

sed 's/NEW[^;]*;//'
NEW[^;]*;

eliminamos todo lo que empiece por NEW, [^;] empiece por ; continue por lo que sea * y termine en ;

La parte [^;] que esta detras de NEW no entiendo el cometido.

saludos
Avatar de Usuario
neurus
Forista Legendario
Forista Legendario
Mensajes: 1807
Registrado: Dom Oct 10, 2004 7:00 am

Re: Creacion de un archivo crv en Linux

Mensaje por neurus » Dom Abr 08, 2012 4:53 am

T4rrit0 -o algo así- te dio una solución correcta.

Probablemente estás usando Dash. Prueba ejecutar Bash antes de iniciar la secuencia de comandos aquí expuesta.

En cuanto a sed, los parámetros van entre comillas simples: sed 's/A/B/'
Avatar de Usuario
akodo
Moderador
Moderador
Mensajes: 1457
Registrado: Mié Nov 28, 2007 8:00 am
Ubicación: En la X del explorer (pulse para llamar)

Re: Creacion de un archivo crv en Linux

Mensaje por akodo » Dom Abr 08, 2012 5:02 pm

soinel escribió:NEW[^;]*;

eliminamos todo lo que empiece por NEW, [^;] empiece por ; continue por lo que sea * y termine en ;

La parte [^;] que esta detras de NEW no entiendo el cometido.
El "[]" es para especificar un conjunto de caracteres. Añadiendo "*" al final lo que indicas es que ese conjunto de caracteres puede aparece 0 o más veces. Por ejemplo: si quieres que se haga un match con "Abc", "abc", "Bbc" y "bbc" lo puedes indicar como "/[AaBb]bc/" (añado "/" para indicar que es una expresión regular)
Adicionalmente, si el primer caracter del conjunto es "^" lo que indicas es el conjunto complementario de los caracteres que haya entre corchetes (o sea, todos los caracteres que no aparezcan en los corchetes. "[^;]" representa todos los caracteres que no sean ";"

Espero haberme explicado bien.
Descargue el gestor de mp3 "Music Manager" -> ([url=http://ctrlalt.iespana.es]mmlf[/url])
Última versión del gestor "Music Manager" -> ([url=http://sourceforge.net/projects/jmusicmanager/]jmmm[/url])
Responder
  • Similar Topics
    Respuestas
    Vistas
    Último mensaje