Repository 32bit  Forum
Repository 64bit  Wiki

[bash] problema con GREP

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
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.

[bash] problema con GREP

Messaggioda Savio1981 » mer feb 13, 2008 10:00

Salve a tutti, non riesco a capire come fare questo script.. => Selezionare tutti i file nella directory corrente che iniziano con a,b, o c e che contengano almeno 1 volta la parola "pippo" e copiarli nella directory ./tmp

Immagino che per Voi guru sia una stupidata ma io mi sto impastando da 2 giorni :(
Savio1981
Linux 1.0
Linux 1.0
 
Messaggi: 3
Iscritto il: mer feb 13, 2008 9:55

Re: [bash] problema con GREP

Messaggioda whites11 » mer feb 13, 2008 10:19

con il seguente comando ottieni l'elenco dei file che contengono "pippo" e il cui nome inizia per "a"

Codice: Seleziona tutto
grep "pippo" ./a* -l


il resto studiatelo :)
man grep è un buon punto d'inizio
Avatar utente
whites11
Linux 3.x
Linux 3.x
 
Messaggi: 1147
Iscritto il: ven set 30, 2005 12:54
Località: Udine

Re: [bash] problema con GREP

Messaggioda sixjan » mer feb 13, 2008 10:28

cp `grep -w -m1 pippo a* | cut -f1 -d:` ./tmp
sixjan
Linux 2.4
Linux 2.4
 
Messaggi: 407
Iscritto il: dom gen 06, 2008 11:46
Slackware: 14.1
Kernel: 3.10.17-smp
Desktop: Xfce 4.10

Re: [bash] problema con GREP

Messaggioda Savio1981 » mer feb 13, 2008 10:31

whites11 ha scritto:con il seguente comando ottieni l'elenco dei file che contengono "pippo" e il cui nome inizia per "a"

Codice: Seleziona tutto
grep "pippo" ./a* -l


il resto studiatelo :)
man grep è un buon punto d'inizio



Grazie mille della risposta, io ero arrivato a questo:

grep "pippo" [abc]* -l

che effettivamente mi lista i file di cui ho bisogno.. il problema che incontravo era semplicemente che non avevo idea di come utilizzare quell'output :)

cioè..ora che so quali files copiare non so come copiarli... hai ragione, sono abbastanza n-bye..ma nn mi arrendo.. continuerò a cercare un costrutto che possa funzionare..

grazie ancora e ciao!
Savio1981
Linux 1.0
Linux 1.0
 
Messaggi: 3
Iscritto il: mer feb 13, 2008 9:55

Re: [bash] problema con GREP

Messaggioda harakei » mer feb 13, 2008 10:41

io ne ho trovato uno, se vuoi, e solo se vuoi te lo passo.
Avatar utente
harakei
Packager
Packager
 
Messaggi: 118
Iscritto il: lun dic 19, 2005 15:57
Località: Taranto
Slackware: 13-current
Kernel: 2.6.32.7-ck2
Desktop: kde

Re: [bash] problema con GREP

Messaggioda aschenaz » mer feb 13, 2008 10:48

ora che so quali files copiare non so come copiarli

La risposta te l'ha già data sixjan: quello che includi tra apici invertiti è l'output di un comando che passi ad un altro comando. ;)
pensieriemotivi.aschenaz.eu - music-blog
Avatar utente
aschenaz
Staff
Staff
 
Messaggi: 4423
Iscritto il: mar lug 27, 2004 23:00
Località: Reggio Calabria
Nome Cognome: Nino
Slackware: current 64bit
Kernel: 3.14.16
Desktop: KDE 4.10.5

Re: [bash] problema con GREP

Messaggioda Savio1981 » mer feb 13, 2008 10:50

aschenaz ha scritto:
ora che so quali files copiare non so come copiarli

La risposta te l'ha già data sixjan: quello che includi tra apici invertiti è l'output di un comando che passi ad un altro comando. ;)


cp `grep "pippo" [abc]* -l` ./tmp

funziona!

però ho capito anche xè si usa cut in pipe con grep...ty
Savio1981
Linux 1.0
Linux 1.0
 
Messaggi: 3
Iscritto il: mer feb 13, 2008 9:55

Re: [bash] problema con GREP

Messaggioda aschenaz » mer feb 13, 2008 10:55

Offtopic: P.S.: Benvenuto su Slacky! :D
pensieriemotivi.aschenaz.eu - music-blog
Avatar utente
aschenaz
Staff
Staff
 
Messaggi: 4423
Iscritto il: mar lug 27, 2004 23:00
Località: Reggio Calabria
Nome Cognome: Nino
Slackware: current 64bit
Kernel: 3.14.16
Desktop: KDE 4.10.5

Re: [bash] problema con GREP

Messaggioda sixjan » mer feb 13, 2008 11:16

Effettivamente il mio comando era inutilmente ridondante :D

Ciao
sixjan
Linux 2.4
Linux 2.4
 
Messaggi: 407
Iscritto il: dom gen 06, 2008 11:46
Slackware: 14.1
Kernel: 3.10.17-smp
Desktop: Xfce 4.10

Re: [bash] problema con GREP

Messaggioda ZeD » mer feb 13, 2008 12:10

mi spiace per voi, ma quello scriptino ha problemi se ci sono in ballo files con spazi

Codice: Seleziona tutto
$ echo "pippo" > 'a file con spazi'
$ echo "pippo" > 'b file con spazi'
$ cp `grep "pippo" [abc]* -l` ./tmp/
cp: impossibile fare stat di `a': No such file or directory
cp: impossibile fare stat di `file': No such file or directory
cp: impossibile fare stat di `con': No such file or directory
cp: impossibile fare stat di `spazi': No such file or directory
cp: impossibile fare stat di `b': No such file or directory
cp: impossibile fare stat di `file': No such file or directory
cp: impossibile fare stat di `con': No such file or directory
cp: impossibile fare stat di `spazi': No such file or directory
$

e anche usando i doppi apici in modo naïve
Codice: Seleziona tutto
$ cp "`grep "pippo" [abc]* -l`" ./tmp/
cp: impossibile fare stat di `a file con spazi\nb file con spazi': No such file or directory
$


invece lasciate fare il lavoro di glob extension alla shell :D
Codice: Seleziona tutto
$ for file in [abc]*; do
    if grep "pippo" "$file" > /dev/null; then
        cp "$file" ./tmp;
    fi;
done
$


(tra l'altro l'ultima versione è oggettivamente più leggibile)
Avatar utente
ZeD
Linux 2.0
Linux 2.0
 
Messaggi: 112
Iscritto il: ven ott 28, 2005 11:30
Località: Terra
Slackware: 12.1

Re: [bash] problema con GREP

Messaggioda targzeta » mer feb 13, 2008 12:18

ZeD ha scritto:....
invece lasciate fare il lavoro di glob extension alla shell :D
Codice: Seleziona tutto
$ for file in [abc]*; do
    if grep "pippo" "$file" > /dev/null; then
        cp "$file" ./tmp;
    fi;
done
$


(tra l'altro l'ultima versione è oggettivamente più leggibile)...


E perchè non questo?
Codice: Seleziona tutto
(IFS="\n\t"; cp `grep "pippo" [abc]* -l` ./tmp)


Per quanto riguarda la leggibilità, penso che sia sempre e comunque soggettiva, quelli di matrix vedevano ragazze nello schermo verde :).

Spina
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà
Avatar utente
targzeta
Iper Master
Iper Master
 
Messaggi: 6168
Iscritto il: gio nov 03, 2005 14:05
Località: Carpignano Sal. (LE) <-> Pisa
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM

Re: [bash] problema con GREP

Messaggioda sixjan » mer feb 13, 2008 12:53

ZeD ha scritto:E perchè non questo?

Codice: Seleziona tutto
(IFS="\n\t"; cp `grep "pippo" [abc]* -l` ./tmp)



Per quanto riguarda la leggibilità, penso che sia sempre e comunque soggettiva, quelli di matrix vedevano ragazze nello schermo verde :).


Aggiungerei l'opzione "-w" a grep per non avere falsi positivi come pippolo, strapippo,
impippo :)
sixjan
Linux 2.4
Linux 2.4
 
Messaggi: 407
Iscritto il: dom gen 06, 2008 11:46
Slackware: 14.1
Kernel: 3.10.17-smp
Desktop: Xfce 4.10

Re: [bash] problema con GREP

Messaggioda stan » mer feb 13, 2008 13:58

spina ha scritto:E perchè non questo?
Codice: Seleziona tutto
(IFS="\n\t"; cp `grep "pippo" [abc]* -l` ./tmp)

Per quanto riguarda la leggibilità, penso che sia sempre e comunque soggettiva, quelli di matrix vedevano ragazze nello schermo verde :).
Spina

Offtopic: Spina, per lo slackbuild ati-packager....guarda che io non sono Neo! :lol: :badgrin:
Avatar utente
stan
Linux 2.6
Linux 2.6
 
Messaggi: 524
Iscritto il: lun dic 25, 2006 11:55
Località: Bs
Slackware: 12.1
Kernel: 2.6.xx
Desktop: Kde3

Re: [bash] problema con GREP

Messaggioda targzeta » mer feb 13, 2008 19:55

stan ha scritto:Offtopic: Spina, per lo slackbuild ati-packager....guarda che io non sono Neo! :lol: :badgrin:

Offtopic: Secondo me ti devo solo portare dall'oracolo :).

Spina
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà
Avatar utente
targzeta
Iper Master
Iper Master
 
Messaggi: 6168
Iscritto il: gio nov 03, 2005 14:05
Località: Carpignano Sal. (LE) <-> Pisa
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM

Re: [bash] problema con GREP

Messaggioda ZeD » sab feb 16, 2008 23:19

spina ha scritto:E perchè non questo?
Codice: Seleziona tutto
(IFS="\n\t"; cp `grep "pippo" [abc]* -l` ./tmp)

Spina

Fallo in una directory dove l'elenco esteso di "[abc]*" supera i 1024 caratteri (limite massimo, in genere, per il buffer di argv dei programmi scritti in c) e capirai perchè
Avatar utente
ZeD
Linux 2.0
Linux 2.0
 
Messaggi: 112
Iscritto il: ven ott 28, 2005 11:30
Località: Terra
Slackware: 12.1


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 0 ospiti

cron