ayuda con el copmando grep

Iniciado por ruben_linux, 3 Septiembre 2012, 18:16 PM

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

ruben_linux

El caso es que tengo un "txt" con una serie de palabras que necesito buscar en otro directorio con varios archivos "txt".

/home/ruben/fuente.txt---> las palabras que quiero buscar
/home/ruben/*.txt --------> los archivos en los que quiero buscar

he probado a pasar la salida de cat a grep (cat /home/ruben/fuentes.txt | grep /home/ruben/*.txt) pero no funciona, tambien, añadi las opciones -f y -w a grep y sigue sin funcionar.

buscando por la red di con este script, pero tampoco consigo el resultado deseado.

for name in `cat /home/ruben/fuente.txt `
do
grep $name /home/ruben/*.txt >> salida
done

Seaworth

Hola,

para un archivo de texto sería:
grep -f fuente.txt archivo_donde_buscar.txt

Para archivos en un directorio, no sé si funcionaría:
Citar
for i in /home/ruben/*.txt    <ENTER>
>do              <ENTER>
>grep -f /home/ruben/fuente.txt $i  <ENTER>
>done;

pero revísalo, porque lo he probado deprisa y corriendo y no he revisado casos (o sea, que no se "salte" ocurrencias).


Seaworth

Un ejemplo más "mierder", aunque no sé si es esto lo que estabas buscando:


#!/bin/bash

for i in *.txt; do cat *.txt > salida-total.doc;
done;
grep -w -f /home/ruben/fuente.txt salida-total.doc;
rm salida-total.doc;


Ten en cuenta que si el archivo "fuente.txt" está en el mismo directorio que los ".txt" donde buscas, igual al cat o al grep se les va la pinza. Una manera sería renombrar el "fuente.txt" a "fuente.doc" para que no le afecte el "cat *.txt".

No sé si esto te funcionará o era lo que buscabas...

Saludos.

ruben_linux

#3
Gracias Seaworth
Tan simple como:

grep -f /home/ruben/fuente.txt /home/ruben/archivos/*

busca las palabras que contiene fuente.txt en todos los documentos de /home/ruben/archivos/*

**********************

ANULAR ESTABA ENGAÑADO

:-[
***********************