PDA

View Full Version : Aiuto script shell linux


Taz83
21-11-2007, 15:24
Salve a tutti, avrei cortesemente bisogno di un aiuto per risolvere questo problema.

Esempio: facendo "ps aux" si ottiene l'elenco dei processi e relative caratteristiche suddivise per colone. Di queste colonne vorrei solo la quinta (da mettere per esempio con un redirect su un file).

Normalmente si farebbe "ps aux | cut -d" " -f5" ma in questo caso cut non divide correttamente i token perchè lo spazio " " è ripetuto più volte tra una colonna l'altra. Non è neanche possibile contare gli spazi e correggere il paramentro -f perchè il numero di spazi è variable. C'è un modo per risolvere il problema? Tipo far contare N spazi consecutivi come uno solo? Altre idee con altri comandi?

Grazie

thehuge
21-11-2007, 16:10
Ti consiglio
man awk

Taz83
21-11-2007, 17:39
Ti consiglio
man awk

ciao, grazie per la risposta.

Ho guardato awk ma non ho trovato cosa fare :confused:

darkbasic
21-11-2007, 17:57
Ti interessa prendere la 5 colonna vero?
awk '{ print $4 }'
Ci sono altri modi per farlo senza scomodare awk (che è alla stregua di un linguaggio di programmazione :D ), ma al momento non mi vengono in mente e non ho voglia di cercarli.

thehuge
22-11-2007, 08:28
Per maggiori informazioni su awk ecco una guida terra-terra in italiano (http://www.pluto.it/files/journal/pj9809/awk.html) e la ben più completa guida ufficiale GNU (http://www.gnu.org/software/gawk/manual/gawk.html) (in inglese).

Taz83
22-11-2007, 08:31
Grazie, siete stati entrambi veramente gentilissimi :)

Adoro i forum ben riuesciti (detto alla hannibal smith) :D

Sir Wallace
22-11-2007, 08:55
puoi anche provare


ps aux | tr -s " " " " | cut -d" " -f5


;)

Taz83
22-11-2007, 10:40
puoi anche provare


ps aux | tr -s " " " " | cut -d" " -f5


;)

grande, questa è proprio la soluzione ottimale :)

grazie, a buon rendere :)