bash: rilevare una stringa

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
Avatar utente
Absolut
Linux 4.x
Linux 4.x
Messaggi: 1465
Iscritto il: gio 10 feb 2005, 0:00
Slackware: current
Località: Roma

bash: rilevare una stringa

Messaggio da Absolut »

Ciao ragazzi,

ho un file, in cui ad una certa linea vi è un campo NomeCognome="PippoPaperino"

Quello che dovrei fare è rilevare PippoPaperino e assegnarlo a una variabile. Tenete presente che PippoPaperino può essere ovviamente qualsiasi stringa.

sapreste indicarmi come?

thansk!

Avatar utente
Ansa89
Iper Master
Iper Master
Messaggi: 2703
Iscritto il: mer 29 ago 2007, 17:57
Nome Cognome: Stefano Ansaloni
Slackware: 14.2 64bit
Kernel: 4.9.61
Desktop: XFCE 4.12
Località: Modena

Re: bash: rilevare una stringa

Messaggio da Ansa89 »

Codice: Seleziona tutto

var=`grep -m 1 "PippoPaperino" nome_file`

Avatar utente
Absolut
Linux 4.x
Linux 4.x
Messaggi: 1465
Iscritto il: gio 10 feb 2005, 0:00
Slackware: current
Località: Roma

Re: bash: rilevare una stringa

Messaggio da Absolut »

Ok, grazie ma così mi viene memorizzata tutta la stringa dove si trova PippoPaperino!

Avatar utente
Ansa89
Iper Master
Iper Master
Messaggi: 2703
Iscritto il: mer 29 ago 2007, 17:57
Nome Cognome: Stefano Ansaloni
Slackware: 14.2 64bit
Kernel: 4.9.61
Desktop: XFCE 4.12
Località: Modena

Re: bash: rilevare una stringa

Messaggio da Ansa89 »

Scusa, sono un po' sbadato :roll: .
Prova così:

Codice: Seleziona tutto

var=`grep -m 1 "PippoPaperino" nome_file | cut -d "\"" -f 2`

Avatar utente
shark1500
Linux 3.x
Linux 3.x
Messaggi: 785
Iscritto il: gio 3 apr 2008, 14:33
Slackware: current
Kernel: 2.6.27.7-smp
Desktop: kde
Località: Modna

Re: bash: rilevare una stringa

Messaggio da shark1500 »

Codice: Seleziona tutto

var=$(grep -m 1 "PippoPaperino" nome_file | gawk -F'"' '{ print $2 }')
Cosi` dovrebbe funzionare, ma non ho ben capito il senso, cioe`, se ad esempio fai

Codice: Seleziona tutto

. nome_file && echo $NomeCognome
hai comunque la stringa.

Pero` non conosco il contesto quindi do la mia risposta

Avatar utente
Absolut
Linux 4.x
Linux 4.x
Messaggi: 1465
Iscritto il: gio 10 feb 2005, 0:00
Slackware: current
Località: Roma

Re: bash: rilevare una stringa

Messaggio da Absolut »

Ansa89 ha scritto:Scusa, sono un po' sbadato :roll: .
Prova così:

Codice: Seleziona tutto

var=`grep -m 1 "PippoPaperino" nome_file | cut -d "\"" -f 2`

ok sembra funzionare... ma in realtà io non so che li c'è scritto PippoPaperino.. esattamente dovrei prendere:

NomeCognome="xxxx"

dove xxx sta per una qualsiasi stringa...... alfanumerica!


thanks intanto ragazzi!

Avatar utente
shark1500
Linux 3.x
Linux 3.x
Messaggi: 785
Iscritto il: gio 3 apr 2008, 14:33
Slackware: current
Kernel: 2.6.27.7-smp
Desktop: kde
Località: Modna

Re: bash: rilevare una stringa

Messaggio da shark1500 »

Sostituisci "PippoPaperino" con "NomeCognome", almeno quella la saprai, o no?

Avatar utente
Absolut
Linux 4.x
Linux 4.x
Messaggi: 1465
Iscritto il: gio 10 feb 2005, 0:00
Slackware: current
Località: Roma

Re: bash: rilevare una stringa

Messaggio da Absolut »

Ok... ma essendoci prima altri campi delimitati da "" vedo il primo della riga....

ad esempio CodiceFiscale="VFDFSF" NomeCognome="PippoPaperino"

mi restituisce VFDFSF


thanks!

Avatar utente
Ansa89
Iper Master
Iper Master
Messaggi: 2703
Iscritto il: mer 29 ago 2007, 17:57
Nome Cognome: Stefano Ansaloni
Slackware: 14.2 64bit
Kernel: 4.9.61
Desktop: XFCE 4.12
Località: Modena

Re: bash: rilevare una stringa

Messaggio da Ansa89 »

Codice: Seleziona tutto

var=`grep -m 1 "NomeCognome" nome_file | cut -d "\"" -f 4`

Avatar utente
shark1500
Linux 3.x
Linux 3.x
Messaggi: 785
Iscritto il: gio 3 apr 2008, 14:33
Slackware: current
Kernel: 2.6.27.7-smp
Desktop: kde
Località: Modna

Re: bash: rilevare una stringa

Messaggio da shark1500 »

No ansa, il tuo non e` generico, funziona sempre in quel caso specifico.

Per fare una cosa generica consiglio di usare quello di prima, pero` prima devi fare un

Codice: Seleziona tutto

sed s/ /\n/g
, cosi` non e` piu` tutto sulla stessa riga.

Avatar utente
Ansa89
Iper Master
Iper Master
Messaggi: 2703
Iscritto il: mer 29 ago 2007, 17:57
Nome Cognome: Stefano Ansaloni
Slackware: 14.2 64bit
Kernel: 4.9.61
Desktop: XFCE 4.12
Località: Modena

Re: bash: rilevare una stringa

Messaggio da Ansa89 »

shark1500 ha scritto:Per fare una cosa generica consiglio di usare quello di prima, pero` prima devi fare un

Codice: Seleziona tutto

sed s/ /\n/g
, cosi` non e` piu` tutto sulla stessa riga.
Sperando che tra il nome e il cognome non ci siano spazi :roll: .

Avatar utente
shark1500
Linux 3.x
Linux 3.x
Messaggi: 785
Iscritto il: gio 3 apr 2008, 14:33
Slackware: current
Kernel: 2.6.27.7-smp
Desktop: kde
Località: Modna

Re: bash: rilevare una stringa

Messaggio da shark1500 »

Se si vuole fare una cosa fatta per bene mi sa che non basta una riga di codice come stiamo facendo noi :-)

Avatar utente
Absolut
Linux 4.x
Linux 4.x
Messaggi: 1465
Iscritto il: gio 10 feb 2005, 0:00
Slackware: current
Località: Roma

Re: bash: rilevare una stringa

Messaggio da Absolut »

Ciao ragazzi,

grazie al vostro aiuto.. sono riuscito in quello che volevo:

Codice: Seleziona tutto

grep -m 1 -o "NomeCognome=\"[a-zA-Z0-9._]*\"" | gawk -F'"' '{ print $2 }')

grazie intanto per l'aiuto!

Rispondi