Reglamento general de los foros   •   FAQ   •   Buscar en el foro •  Registrarse | Iniciar sesión 



Portada » Foros Linux » Desarrollo » Programación


Nuevo tema Responder al tema
 [ 10 mensajes ] 
Patrocinadores

Autor
Buscar:
Mensaje

Desconectado
Forista Nuevo
Forista Nuevo

Registrado: Vie Abr 06, 2012 9:06 pm
Mensajes: 4

Nota Publicado: Vie Abr 06, 2012 10:18 pm 
Arriba  
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
 Perfil  

Desconectado
Administrador
Administrador
Avatar de Usuario

Registrado: Lun Abr 19, 2010 12:30 am
Mensajes: 3888
Ubicación: En una de las nalgas del culo del mundo (según la Bersuit Vergarabat)

Nota Publicado: Vie Abr 06, 2012 11:49 pm 
Arriba  
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

 Perfil WWW  

Desconectado
Ganador CSEL 2011
Ganador CSEL 2011
Avatar de Usuario

Registrado: Dom Dic 12, 2010 6:07 pm
Mensajes: 357

Nota Publicado: Vie Abr 06, 2012 11:51 pm 
Arriba  
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:
borrar=`grep NEW archivo| cut -d\; -f1`;sed "s/$borrar;//" archivo


salu2

 Perfil WWW  

Desconectado
Forista Nuevo
Forista Nuevo

Registrado: Vie Abr 06, 2012 9:06 pm
Mensajes: 4

Nota Publicado: Sab Abr 07, 2012 2:37 pm 
Arriba  
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:
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:
borrar= grep NEW toner | cut -d';' -f1


la siguiente parte es la que no funciona y no entiendo el por que¿?
Código:
sed 's/$borrar//' toner > toner3
he provado con $borrar , '$borrar' , "'$borrar'"

No entiendo ¿que error puede ser?

saludos

 Perfil  

Desconectado
Ganador CSEL 2011
Ganador CSEL 2011
Avatar de Usuario

Registrado: Dom Dic 12, 2010 6:07 pm
Mensajes: 357

Nota Publicado: Sab Abr 07, 2012 6:07 pm 
Arriba  
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:
borrar=`grep NEW toner| cut -d\; -f1`;sed "s/$borrar;//" toner > toner3


esta es mi salida (toner3)
Código:
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

 Perfil WWW  

Desconectado
Forista Nuevo
Forista Nuevo

Registrado: Vie Abr 06, 2012 9:06 pm
Mensajes: 4

Nota Publicado: Sab Abr 07, 2012 7:26 pm 
Arriba  
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:
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

 Perfil  

Desconectado
Moderador
Moderador
Avatar de Usuario

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

Nota Publicado: Sab Abr 07, 2012 7:46 pm 
Arriba  
Prueba a ver si funciona el siguiente código (ajústalo antes que no sé si funcionará)
Código:
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" -> (mmlf)
Última versión del gestor "Music Manager" -> (jmmm)

 Perfil  

Desconectado
Forista Nuevo
Forista Nuevo

Registrado: Vie Abr 06, 2012 9:06 pm
Mensajes: 4

Nota Publicado: Dom Abr 08, 2012 2:10 am 
Arriba  
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:
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

 Perfil  

Desconectado
Forista Legendario
Forista Legendario
Avatar de Usuario

Registrado: Dom Oct 10, 2004 7:00 am
Mensajes: 1798

Nota Publicado: Dom Abr 08, 2012 4:53 am 
Arriba  
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/'

 Perfil  

Desconectado
Moderador
Moderador
Avatar de Usuario

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

Nota Publicado: Dom Abr 08, 2012 5:02 pm 
Arriba  
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" -> (mmlf)
Última versión del gestor "Music Manager" -> (jmmm)

 Perfil  
Mostrar mensajes previos:  Ordenar por  
 [ 10 mensajes ] 
Nuevo tema Responder al tema

Saltar a:  


 Temas relacionados   Autor   Respuestas   Vistas   Último mensaje 
Averiguar fecha de creación y eliminación de archivo a través de su número de inodo

en Sistema

quierolinux

4

1179

Jue Mar 28, 2013 5:22 am

quierolinux Ver último mensaje

Creacion de un Dico duro externo Booteable con una distro de linux

en Sistema

brosvv

2

1672

Mar Feb 16, 2010 1:22 am

Hawkingsagan Ver último mensaje

no puedo instalar Linux -_-u "falló la creación del sistema de ficheros ext4 en la partición #1 de scsi1"

en GNOME

voidself

1

143

Mié Mar 06, 2019 9:57 pm

doc Ver último mensaje

Guardar archivo en versión Linux live

en Programación

Lilo24

4

472

Mar Nov 14, 2017 9:49 pm

Hawkingsagan Ver último mensaje

donde se encuentra el archivo config.h? en arch linux dwm?

en Otros escritorios y entornos

crunch

0

439

Lun Ago 21, 2017 1:13 am

crunch Ver último mensaje



¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro
No puede enviar adjuntos en este Foro

cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group :: Style based on FI Subice by phpBBservice.nl :: Todos los horarios son UTC + 1 hora [ DST ]
Traducción al español por Huan Manwë
phpBB SEO