Newsgroup: it.comp.os.linux.iniziare
Titolo: Comando grep e ricerca di una precisa parola

Quesito:
Voglio trovare una precisa parola all'interno di file ad esempio:
desidero cercare la parola precisa "tree" all'interno del file
.bash_history e non "pstree"
Prove:
1
grep \ tree\ .bash_history
ma cosï¿œ perdo tutte le situazioni del tipo $(tree -dfi ./miadir)
ho provato con
2
grep \tree .bash_history
non funziona ï¿œ come se l'escape non ci fosse
lo stesso per
3
grep ""tree .bash_history
e
grep ''tree .bash_history
continua a darmi anche parole come pstree
Grazie in anticipo per l'aiuto
Gav

 continua a darmi anche parole come pstree
Prova una di queste:
grep -E '\btree\b'
oppure
grep -E '([^a-z]|^)tree([^a-z]|$)'
il secondo e' solo un esempio di come puoi personalizzare la cosa scegliendo
la parola solo quando e' preceduta o seguita da specifici caratteri e non
altri.

 
ok funziona, anche senza -E.
Un chiarimento sull'ansi-c quoting:
se non sbaglio ciï¿œ che mi hai fatto fare ï¿œ l'utilizzo di un ansi-c
quoting, ho datto un occhio su internet ma non dicono molto di come
funziona o qualche esempio di possibili utilizzi, puoi darmi qualche
indicazione a riguardo?
grazie
Gav

 indicazione a riguardo?
Uhm, non so cosa sia l'ansi-C quoting. *cerca su google*
http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_03_03.html
Ok, no, non e' ansi C quoting. E' normale quoting con apici singoli per
proteggere il contenuto della stringa dalla shell.

.bash_history e non "pstree"
Ma scusa non e' semlicemente "grep -w" che ti basta/serve?
-- 
Saluti, Dalet

 continua a darmi anche parole come pstree
[alessandro@robur ~]$ cat prova.txt
Prima riga con la parola micia e null'altro.
Seconda riga con la parola camicia e poco altro.
Terza riga che riferice di Marco e Antonella che pomiciano di brutto al
garage.
Quarta riga senza gatte o altro.
[alessandro@robur ~]$ grep micia prova.txt
Prima riga con la parola micia e null'altro.
Seconda riga con la parola camicia e poco altro.
Terza riga che riferice di Marco e Antonella che pomiciano di brutto al
garage.
[alessandro@robur ~]$ grep -w micia prova.txt
Prima riga con la parola micia e null'altro.
  E infatti:
[alessandro@robur ~]$ man 1 grep
[...]
       -w, --word-regexp
              Select only those lines containing matches that form
              whole words. The test is that the matching substring
              must either be at the beginning of the line, or
              preceded by a non-word constituent  character.
              Similarly, it must be either at the end of the line
              or followed by a non-word constituent character.
              Word-constituent characters are letters, digits, and
              the underscore.
  Ciao,
-- 
Alessandro Selli 
http://alessandro.route-add.net
AVVERTENZA: i messaggi inviati a "trappola" non mi arriveranno.
WARNING: messages sent to "trappola" will never reach me.
Chiave PGP/GPG: EC885A8B

Alessandro Selli ha scritto:

  E c'è anche questa estensione GNU, più generica dei test effettuati
dallo switch -w:
[alessandro@robur ~]$ grep '\Wmicia\W' prova.txt
Prima riga con la parola micia e null'altro.
  che è la stessa cosa di:
[alessandro@robur ~]$ grep '[^[:alnum:]]micia[^[:alnum:]]' prova.txt
Prima riga con la parola micia e null'altro.
  Guarda sempre nelle pagine man.


 Prima riga con la parola micia e null'altro.
Non funziona se la parola e' all'inizio o alla fine della riga. Come minimo
ci vuole
(\W|^)micia(\W|$)
(e grep -E)
oppure \b.