PDA

Visualizza la versione completa : ricerca parole in una directory


alkat
24-06-2005, 09:02
ciao,
sto cercando un programma che mi permetta di trovare una parola in una serie di file contenuti in una directory.

lo devo usare per cercare definizioni in un numero piuttosto cospicuo di file di glossario molto corposi e dovrebbe quindi trovare sì la parola, ma magari dare come risultato tutte le informazioni su quel termine. si tratta di file csv, quindi il termine cercato, la definizione e l'eventuale traduzione si trovano su quella che in calc sarebbe la stessa riga.

conoscete qualcosa che mi possa tornare utile?

.a.

cacao74
24-06-2005, 12:19
man grep

ciao

beepbeep
24-06-2005, 13:51
grep -r "parola o frase che cerchi sempre tra apici doppi" /percorso

attento agli apostrofi e a tutti quei caratteri particolari perche' non segnala le parole che li contengono

:ciauz:

alkat
24-06-2005, 15:06
Originariamente inviato da beepbeep
grep -r "parola o frase che cerchi sempre tra apici doppi" /percorso

attento agli apostrofi e a tutti quei caratteri particolari perche' non segnala le parole che li contengono

:ciauz:

ah, le meraviglie della shell! :)

una cosa però, in che modo posso visualizzare i risultati in modo un po' più leggibile?

ad esempio:
grep -r gateway ~/Traduzione/glossari > ~/Desktop/search.txt

mi dà come risultato questo:
~/Traduzione/glossari/glossario-linux.utf8:application gateway application gateway sistema che permette di controllare il traffico di rete a livello di applicazione


c'è un modo per dare una qualche formattazione all'output del comando grep?
a me basterebbe che venisse elencato il percorso su una riga e il risultato della ricerca sulla riga sottostante, in questo modo:
~/Traduzione/glossari/glossario-linux.utf8:
application gateway application gateway sistema che permette di controllare il traffico di rete a livello di applicazione

.a.
.a.

stai_tranquillo
24-06-2005, 15:07
manda in pipeline l'output di grep a sed
(grep qualcosa | sed espressione)

man sed

e leggi anche il manuale di grep nella parte riservata alle regexp (egrep o grep -e), che ti serviranno anche con sed

cacao74
24-06-2005, 16:27
Originariamente inviato da alkat
[...]
a me basterebbe che venisse elencato il percorso su una riga e il risultato della ricerca sulla riga sottostante, in questo modo:
~/Traduzione/glossari/glossario-linux.utf8:
application gateway application gateway sistema che permette di controllare il traffico di rete a livello di applicazione

.a.
.a.
Perdona la banalità dell'esempio, ma non mi è venuto in mente nulla di più furbo. :P


[cacao74@winnie ~/tmp]$ ls definizioni/
elenco-01 elenco-02

[cacao74@winnie ~/tmp]$ paste definizioni/*
### elenco definizioni ### ### elenco definizioni ###
questo_no-01 definizione-01 questo_no-01 definizione-01
questo_si-02 definizione-02 questo_si-02 definizione-02
questo_si-03 definizione-03 questo_si-03 definizione-03
questo_no-04 definizione-04 questo_no-04 definizione-04
questo_si-05 definizione-05 questo_si-05 definizione-05
questo_no-06 definizione-06 questo_no-06 definizione-06
questo_si-07 definizione-07 questo_si-07 definizione-07
questo_no-08 definizione-08 questo_no-08 definizione-08
questo_no-09 definizione-09 questo_no-09 definizione-09
questo_no-10 definizione-10 questo_no-10 definizione-10
questo_no-11 definizione-11 questo_no-11 definizione-11
questo_no-12 definizione-12 questo_no-12 definizione-12

[cacao74@winnie ~/tmp]$ grep -R 'questo_si' definizioni | \
awk -F: ' { print $1 FS "\n\t" $2 } '
definizioni/elenco-01:
questo_si-02 definizione-02
definizioni/elenco-01:
questo_si-03 definizione-03
definizioni/elenco-01:
questo_si-05 definizione-05
definizioni/elenco-01:
questo_si-07 definizione-07
definizioni/elenco-02:
questo_si-02 definizione-02
definizioni/elenco-02:
questo_si-03 definizione-03
definizioni/elenco-02:
questo_si-05 definizione-05
definizioni/elenco-02:
questo_si-07 definizione-07



ciao

alkat
24-06-2005, 23:34
Originariamente inviato da cacao74
Perdona la banalità dell'esempio, ma non mi è venuto in mente nulla di più furbo. :P

ciao

ottimo, grazie!

mi sono accorto però che le ricerche sono case sensitive, il ché è un bel problema. se io cerco "user", vorrei che mi venisse dato anche "User" come risultato. è possibile?

.a.

cacao74
25-06-2005, 00:51
Originariamente inviato da cacao74
man grep

ciao

grep -i <modello>

Loading