|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jan 2005
Città: Cesena
Messaggi: 323
|
[Bash] Confrontare due stringhe
Salve, dovrei prendere da /proc/cpuinfo il valore corrispondente ai bogomips di tutti i processori presenti nella macchina:
Codice:
while read riga ; do .... done < /proc/cpuinfo Ho cercato qualche guida che mi aiutasse ma non sono riuscito a risolvere nulla, qualcuno potrebbe aiutarmi? Grazie |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Mar 2006
Città: Bergamo
Messaggi: 2499
|
Quote:
Codice:
bogomips=`cat /proc/cpuinfo | egrep -i '^bogomips' | head -1 | sed 's/^.*: //'`
__________________
![]() |
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jan 2005
Città: Cesena
Messaggi: 323
|
Ok, ti ringrazio. Una cosa sola, se metto quella riga di codice nel ciclo, salva solo il primo valore che incontro. Nel caso nel file ci siano più voci "bogomips", considera solo il primo che trova. Come si potrebbe risolvere?
|
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
Quote:
cat /proc/cpuinfo | egrep -i '^bogomips' sed 's/^.*: //' | while read riga ; do quel_che_vuoi; done |
|
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Jan 2005
Città: Cesena
Messaggi: 323
|
Quote:
Con Codice:
cat /proc/cpuinfo Con Codice:
| egrep -i '^bogomips' Infine questo frammento di codice Codice:
sed 's/^.*: //' |
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Mar 2006
Città: Bergamo
Messaggi: 2499
|
con grep selezioni solo la riga che riguarda i bogomips e con sed sostituisci tutto il testo prima dei ":" -> "^.*: " con niente.
__________________
![]() |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
con cat lo "mandiamo" verso lo standard output
il pattern di egrep ha l'accento circonflesso per fare il matching solo se la parola bogomips appare a inizio riga (funzionerebbe ugualmente nel caso specifico ma è una buona abitudine). il sed sostituisce tutto quello che va da inizio riga a un duepunti seguito da uno spazio ( ": ") con .... niente, ovvero lo cancella lasciando solo valore numerico. |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Jan 2005
Città: Cesena
Messaggi: 323
|
Ok, vediamo se ho capito allora:
s/ <- sta per "sostituisci" ^.*: <- sta per "da inizio riga fino ai :" // <- sta per "sostituisci con 'niente'" è giusta questa lettura? Questa stessa espressione (sed 's/^.*: //') come sarebbe diventata se avessi voluto sostituire con "nulla", da un determinato carattere (per esempio un punto) posto in mezzo ad una stringa, fino alla fine della riga stessa? Ultima modifica di Zagor HW : 17-01-2008 alle 22:38. |
![]() |
![]() |
![]() |
#9 | |
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
sì
Quote:
|
|
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Jan 2005
Città: Cesena
Messaggi: 323
|
Ok, grazie mille a tutti! Ora ho risolto il mio problema. Ciao Ciao!
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:58.