(BATCH) Eliminar lineas que NO contengan ciertas palabras..

Iniciado por Afkael, 18 Noviembre 2015, 17:03 PM

0 Miembros y 1 Visitante están viendo este tema.

Afkael

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!!!

yMk369

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:

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-




Afkael

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:

(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

explorer

#3
egrep -v "Fecha de presentaci|Liq[.] N|Ventas? en|Ventas? Tj" archivo.txt > nuevo_archivo.txt

yMk369

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.

Afkael

Cita de: yMk369 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.

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..

daryo

las soluciones que estan dando son para bash no batch xD
buenas

explorer

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