Comando grep

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
mordecai
Linux 3.x
Linux 3.x
Messaggi: 752
Iscritto il: mer 10 gen 2007, 21:59

Comando grep

Messaggio da mordecai »

Salve!Non sono mai riuscito a risolvere questo problema usando il comando grep.
Praticamente grep non a altro che visualizzare il contenuto di un file (ad es. .txt).
Con questo comando:

Codice: Seleziona tutto

grep -r --include="*.txt" ciccio *
grep analizza ricorsivamente tutti i file con estensione .txt,che contengono la parola ciccio.Ma grep visualizza non solo la parola,ma l'intera riga che contiene la parola ciccio.
Bene.

Il mio problema,è non riuscire a capire come applicare un altro filtro,che mi consente di vedere solo le righe contententi la parola ciccio e nella stessa riga la parola pluto.
Esempio:
1)ciccio pippo xxx
2)ciccio yyy pluto

Il comando che voglio creare mi deve stampare a video solo la riga 2.

È possibile?

GRazie!

Avatar utente
michelino
Staff
Staff
Messaggi: 871
Iscritto il: gio 21 dic 2006, 11:59
Nome Cognome: Michelino Chionchio
Slackware: -current
Kernel: 2.6.29.6
Desktop: kde (current)
Località: Foggia

Messaggio da michelino »

Se ho capito bene:

Codice: Seleziona tutto

grep ciccio file.txt | grep pluto

Avatar utente
dapuzz
Linux 4.x
Linux 4.x
Messaggi: 1137
Iscritto il: mar 16 mag 2006, 11:09
Contatta:

Messaggio da dapuzz »

Codice: Seleziona tutto

grep -r --include="*.txt" ciccio * | grep pluto

mordecai
Linux 3.x
Linux 3.x
Messaggi: 752
Iscritto il: mer 10 gen 2007, 21:59

Messaggio da mordecai »

dapuzz ha scritto:

Codice: Seleziona tutto

grep -r --include="*.txt" ciccio * | grep pluto
Bene.
Se invece,volessi trovare più parole nella stessa stringa,devo applicare sempre lo stesso ragionamento?CIoè | grep ciccio |grep pippo ecc ecc.

Se invece al posto di pluto,volessi trovare un carattere speciale come " ?^£$ ",cosa si può fare?

Mario Vanoni
Iper Master
Iper Master
Messaggi: 3174
Iscritto il: lun 3 set 2007, 21:20
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey
Località: Cuasso al Monte (VA)

Messaggio da Mario Vanoni »

mordecai ha scritto:
dapuzz ha scritto:

Codice: Seleziona tutto

grep -r --include="*.txt" ciccio * | grep pluto
Bene.
Se invece,volessi trovare più parole nella stessa stringa,devo applicare sempre lo stesso ragionamento?CIoè | grep ciccio |grep pippo ecc ecc.

Se invece al posto di pluto,volessi trovare un carattere speciale come " ?^£$ ",cosa si può fare?
man egrep

egrep ... 'ciccio|pluto' ...

man awk

per ricerche piu` complesse

ATTENTO: ?^ e $ sono speciali, da usare con cognizione,
letteralmente con backslash (\).

Mario Vanoni

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Messaggio da targzeta »

Mario Vanoni ha scritto:...man egrep

egrep ... 'ciccio|pluto' ...
...
Ad occhio e croce questo mi sembra un OR lui invece vuole un AND.
Potrebbe fare qualcosa del genere

Codice: Seleziona tutto

grep -e "ciccio.*pluto" file.txt
comunque, quello che gli serve è:
man 7 regex
oppure, dato che se non sbaglio grep accetta anche espressioni regolari perl,
man perlre
oltre alla spiegazione che c'è anche nel manuale di grep. Insomma si dovrebbe informare meglio sulle espressioni regolari, che è cosa buona e giusta.

Spina
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Rispondi