[phpBB Debug] PHP Warning: in file [ROOT]/includes/acm/acm_memory.php on line 146: Cannot use a scalar value as an array
[phpBB Debug] PHP Warning: in file [ROOT]/includes/acm/acm_memory.php on line 146: Cannot use a scalar value as an array
[phpBB Debug] PHP Warning: in file [ROOT]/includes/acm/acm_memory.php on line 146: Cannot use a scalar value as an array
Creacion de un archivo crv en Linux : Programación
 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: 1791

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

1149

Jue Mar 28, 2013 5:22 am

quierolinux Ver último mensaje

creacion de una distro de linux

en Proyectos

davis150

9

2427

Vie Jun 26, 2009 4:05 pm

davis150 Ver último mensaje

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

en Sistema

brosvv

2

1659

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

109

Mié Mar 06, 2019 9:57 pm

doc Ver último mensaje

Guardar archivo en versión Linux live

en Programación

Lilo24

4

448

Mar Nov 14, 2017 9:49 pm

Hawkingsagan Ver último mensaje



¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados

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

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