[opensuse-es] "Limpieza" de archivos de texto
Hola Lista Necesito "limpiar" ciertos archivos de texto, en particular solo me interesa que me queden los números que están en hexadecimal y lo demás se borre. Ejemplo, tengo lo siguiente 1133.07 - b01000101 - 0x45 - 69 1133.08 - ACK 1133.17 - b00000100 - 0x04 - 4 1133.18 - Stop 1133.32 - Write to PCF8574 at address 0 1133.32 - b01000000 - 0x40 - 64 1133.33 - ACK 1133.41 - b10100000 - 0xa0 - 160 1133.43 - ACK 1133.51 - b10100000 - 0xa0 - 160 1133.53 - Error 1133.56 - Start 1133.65 - b00100000 - 0x20 - 32 1133.66 - ACK 1133.74 - b01010001 - 0x51 - 81 1133.75 - ACK 1133.89 - b00100001 - 0x21 - 33 1133.9 - ACK 1133.99 - b00000010 - 0x02 - 2 y deseo obtener algo así: 0x45 0x04 0x40 0xa0 0xa0 0x20 0x51 0x21 ... Cuando es poco con un procesador de texto lo puedo hacer, pero cuando el archivo contiene muchas hojas, más de 50, se cuelgan los procesadores de texto y tengo algunos con más de 500 hojas. A alguien se le ocurre como puedo hacerlo, dado que no hay un régimen continuo en el que aparecen los números hexadecimales. El único patrón que veo es que siempre están con esta forma, ejemplo: 1133.74 - b01010001 - 0x51 - 81 (un número - número en binario - número en hexadecimal - número en decimal), siempre esta separado por "-". Cualquier sugerencia es bien venida. Gracias por adelantado, Alfredo -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 El 2013-04-25 a las 11:27 -0300, Alfredo Jesús Delaiti escribió:
1133.74 - b01010001 - 0x51 - 81 (un número - número en binario - número en hexadecimal - número en decimal), siempre esta separado por "-".
grep -e "0x" fichero creo, te sacará las lineas que los contienen. Si están siempre en la misma posición, con un "cut" puedes extraer cualquier palabra separada por espacios. - -- Saludos Carlos E. R. (desde 12.1 x86_64 "Asparagus" en Telcontar) -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.18 (GNU/Linux) iEYEARECAAYFAlF5QAcACgkQtTMYHG2NR9U9iQCfYMmosoGiKy1pNkqsR+hrZxOe JfIAn2BceoFwe5cWAybj9tmadPX+8Ywy =zYvx -----END PGP SIGNATURE-----
Hola Carlos
1133.74 - b01010001 - 0x51 - 81 (un número - número en binario - número en hexadecimal - número en decimal), siempre esta separado por "-".
grep -e "0x" fichero
creo, te sacará las lineas que los contienen. Si están siempre en la misma posición, con un "cut" puedes extraer cualquier palabra separada por espacios.
Me deja en pantalla las lineas que contienen 0x, lo cual es un avance, estuve leyendo los manuales de grep, pero no encuentro como hacer para que en lugar de sacarlo por pantalla me cree otro fichero con lo que ha hecho. ¿puede ser una combinación con cat? Si lograse que deje solo lo que tiene la forma 0x??, donde ? es un comodín, seria un golazo. Gracias por la ayuda. Alfredo -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
El 25/04/13 17:54, Alfredo Jesús Delaiti escribió:
Hola Carlos
1133.74 - b01010001 - 0x51 - 81 (un número - número en binario - número en hexadecimal - número en decimal), siempre esta separado por "-".
grep -e "0x" fichero
creo, te sacará las lineas que los contienen. Si están siempre en la misma posición, con un "cut" puedes extraer cualquier palabra separada por espacios.
Me deja en pantalla las lineas que contienen 0x, lo cual es un avance, estuve leyendo los manuales de grep, pero no encuentro como hacer para que en lugar de sacarlo por pantalla me cree otro fichero con lo que ha hecho. ¿puede ser una combinación con cat? Si lograse que deje solo lo que tiene la forma 0x??, donde ? es un comodín, seria un golazo.
Gracias por la ayuda.
Alfredo
No te hago la orden porque me costaria un año :) Pero mira sed que te puede servir http://enavas.blogspot.com.es/2008/03/el-shell-de-linux-comando-sed.html y para sacar a un fichero > fichero_salida -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
El día 25 de abril de 2013 09:54, Alfredo Jesús Delaiti
Hola Carlos
1133.74 - b01010001 - 0x51 - 81 (un número - número en binario - número en hexadecimal - número en decimal), siempre esta separado por "-".
grep -e "0x" fichero
creo, te sacará las lineas que los contienen. Si están siempre en la misma posición, con un "cut" puedes extraer cualquier palabra separada por espacios.
Me deja en pantalla las lineas que contienen 0x, lo cual es un avance, estuve leyendo los manuales de grep, pero no encuentro como hacer para que en lugar de sacarlo por pantalla me cree otro fichero con lo que ha hecho. ¿puede ser una combinación con cat? Si lograse que deje solo lo que tiene la forma 0x??, donde ? es un comodín, seria un golazo.
Con lo que te dio Carlos, una solución rápida es: grep -e "0x" archivotexto.txt | awk '{ print $5}' > archivito.txt Claro, solo funcionaria si lo que deseas mostrar esta en la columna 5 :) Pero con awk, buscando mas puedes hacer maravillas.
Gracias por la ayuda.
Alfredo -- Para dar de baja la suscripción, mande un mensaje a:
opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
-- Saludos, cheperobert -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
Hola a todos El 25/04/13 13:22, cheperobert escribió:
El día 25 de abril de 2013 09:54, Alfredo Jesús Delaiti
escribió: Hola Carlos
1133.74 - b01010001 - 0x51 - 81 (un número - número en binario - número en hexadecimal - número en decimal), siempre esta separado por "-".
grep -e "0x" fichero
creo, te sacará las lineas que los contienen. Si están siempre en la misma posición, con un "cut" puedes extraer cualquier palabra separada por espacios.
Me deja en pantalla las lineas que contienen 0x, lo cual es un avance, estuve leyendo los manuales de grep, pero no encuentro como hacer para que en lugar de sacarlo por pantalla me cree otro fichero con lo que ha hecho. ¿puede ser una combinación con cat? Si lograse que deje solo lo que tiene la forma 0x??, donde ? es un comodín, seria un golazo. Con lo que te dio Carlos, una solución rápida es:
grep -e "0x" archivotexto.txt | awk '{ print $5}' > archivito.txt
Claro, solo funcionaria si lo que deseas mostrar esta en la columna 5 :)
Pero con awk, buscando mas puedes hacer maravillas.
Muchas gracias, es lo que estaba buscando. Me has ahorrado mucho tiempo. Como dato, cuando son 50 hojas con un procesador de texto tardaba 1/2 hora en hacerlo (utilizaba filtros); en este caso con 500 hojas solo 1 segundo. Muchas gracias a todos. Alfredo -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Content-ID:
El día 25 de abril de 2013 09:54, Alfredo Jesús Delaiti <> escribió:
Con lo que te dio Carlos, una solución rápida es:
grep -e "0x" archivotexto.txt | awk '{ print $5}' > archivito.txt
Yo estaba pensando en esto: grep -e "0x" archivotexto.txt | cut -d" " -f5 > archivito.txt
Claro, solo funcionaria si lo que deseas mostrar esta en la columna 5 :)
Mismamente. - -- Saludos Carlos E. R. (desde 12.1 x86_64 "Asparagus" en Telcontar) -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.18 (GNU/Linux) iEYEARECAAYFAlF5mT8ACgkQtTMYHG2NR9XZ0wCdFQoMj6XPKugRAC3vmQTQnsQp J8kAmweO85AkB8L7qgCfWjeySi5kqFgb =6z3Z -----END PGP SIGNATURE-----
participants (4)
-
Alfredo Jesús Delaiti
-
Carlos E. R.
-
cheperobert
-
Francisco F.