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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  (BATCH) Eliminar lineas que NO contengan ciertas palabras..
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: (BATCH) Eliminar lineas que NO contengan ciertas palabras..  (Leído 7,518 veces)
Afkael

Desconectado Desconectado

Mensajes: 56


Ver Perfil
(BATCH) Eliminar lineas que NO contengan ciertas palabras..
« en: 18 Noviembre 2015, 17:03 pm »

Hola, tengo un archivo de texto del que quiero eliminar todas las filas que NO contengan alguna de las siguientes palabras..

* "Fecha de presentaci"
* "Liq. N"
* "Venta en"
* "Ventas en"
* "Venta Tj"
* "Ventas Tj"

esas palabras no necesariamente estan al comienzo de la linea..

Hace muchisimo tiempo vengo renegando con ésto.. y sencillamente no encuentro la forma!

Gracias!!!


« Última modificación: 23 Noviembre 2015, 14:00 pm por Afkael » En línea

yMk369

Desconectado Desconectado

Mensajes: 31


人は何かを成す為に生を受け、成し終えた時、死んで行く


Ver Perfil
Re: (BASH) Eliminar lineas que NO contengan ciertas palabras..
« Respuesta #1 en: 19 Noviembre 2015, 03:25 am »

Te recomiendo SED, es una Bestia (por la cantidad de parámetros y opciones, ademas de que lo puedes combinar con mas tuberías).

Bien comencemos:

uso
sed  ComandosSed  archivo

De la siguiente expresión:

Código:
sed '/palabra/!d' ejemplo.txt > ejemplo2.txt

/palabra/ ---> palabra a buscar, (OJO: como es una cadena va entre slash)

d              --->Borrar una linea

!               --->Negación

>              --->Salida estándar (stdout)

Ahora lo explicare:

 sed busca conciencias con "palabra" y borra esa linea, no espera borra todo lo demás menos esa linea del archivo ejemplo.txt y lo manda al archivo ejemplo2.txt

(esto es conveniente ya que ar conservar el original)

Me gustaría, que tuvieses muchas dudas y así poder explayarnos con infinidad de opciones.
Saludos-





En línea

Afkael

Desconectado Desconectado

Mensajes: 56


Ver Perfil
Re: (BASH) Eliminar lineas que NO contengan ciertas palabras..
« Respuesta #2 en: 19 Noviembre 2015, 16:23 pm »

La verdad es que no se nada de programación.. lo que hago es agarrar códigos que encuentro en internet con un propósito similar y lo adapto a mis necesidades..

Para éste caso venia usando el comando findstr y copiando las lineas en las que se encontraban las palabras clave a otro archivo.. asi:

Código:
(Type "file.txt" | Findstr "^Liq ^Fecha Venta")>"outputFile.txt"

Pero toma datos que no son los que busco y no puedo precisar una cadena más especifica por los espacios..

Por otro lado prové con agregando /c pero no me funcionó (me sigue tomando las palabras por separado) y no encontré como pasarle más de un objetivo de busqueda..

Si alguien puediera ayudarme con el código, tanto con findstr o sed, me seria de gran utilidad
En línea

explorer

Desconectado Desconectado

Mensajes: 102


Analista/Programador Perl


Ver Perfil
Re: (BASH) Eliminar lineas que NO contengan ciertas palabras..
« Respuesta #3 en: 20 Noviembre 2015, 07:23 am »

Código:
egrep -v "Fecha de presentaci|Liq[.] N|Ventas? en|Ventas? Tj" archivo.txt > nuevo_archivo.txt
« Última modificación: 20 Noviembre 2015, 07:25 am por explorer » En línea

yMk369

Desconectado Desconectado

Mensajes: 31


人は何かを成す為に生を受け、成し終えた時、死んで行く


Ver Perfil
Re: (BASH) Eliminar lineas que NO contengan ciertas palabras..
« Respuesta #4 en: 20 Noviembre 2015, 23:09 pm »

Bash

Bash (Bourne again shell) es un programa informático, cuya función consiste en interpretar órdenes, y un lenguaje de programación de consola. Está basado en la shell de Unix y es compatible con POSIX.

https://es.wikipedia.org/wiki/Bash


No digo, que bash no se pueda interpretar en windows,

ahora bien, ¿que SO, utilizas?, por que creo que solo estamos dando patadas de ahogado.
En línea

Afkael

Desconectado Desconectado

Mensajes: 56


Ver Perfil
Re: (BASH) Eliminar lineas que NO contengan ciertas palabras..
« Respuesta #5 en: 23 Noviembre 2015, 13:59 pm »

Bash

Bash (Bourne again shell) es un programa informático, cuya función consiste en interpretar órdenes, y un lenguaje de programación de consola. Está basado en la shell de Unix y es compatible con POSIX.

https://es.wikipedia.org/wiki/Bash


No digo, que bash no se pueda interpretar en windows,

ahora bien, ¿que SO, utilizas?, por que creo que solo estamos dando patadas de ahogado.

Uops!!! en realidad quise poner Batch, es un archivo.bat que ejecuto en la misma carpeta en que están los archivos de texto a procesar. Ahora lo edito..
En línea

daryo


Desconectado Desconectado

Mensajes: 1.070



Ver Perfil WWW
Re: (BATCH) Eliminar lineas que NO contengan ciertas palabras..
« Respuesta #6 en: 29 Noviembre 2015, 02:21 am »

las soluciones que estan dando son para bash no batch xD
En línea

buenas
explorer

Desconectado Desconectado

Mensajes: 102


Analista/Programador Perl


Ver Perfil
Re: (BATCH) Eliminar lineas que NO contengan ciertas palabras..
« Respuesta #7 en: 30 Noviembre 2015, 07:05 am »

Se daba por sobreentendido que si estamos en un foro de hackers, estaría usando un Linux o similar, no el anciano Windows ;)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines