|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Nov 2010
Città: Messina
Messaggi: 2
|
[Script Shell] probema con awk
Salve, ho un problema con awk. Mi spiego meglio, devo scrivere uno script che trovi e stampi a video tutti gli utenti registrati nel sistema che abbiano "false" come shell. A video la lista deve essere mostrata come <username> <uid> in ordine numerico crescente rispetto a <uid>.
Quel che ho fatto io è: #!/bin/sh FILE=/etc/passwd echo $(sed -n '/false/p' $FILE | awk 'BEGIN{FS=":"}{print $3, $1}' | sort | awk '{print $2, $1}') exit 0 ma il risultato me lo stampa a video senza che awk vada a capo tra i vari record, inoltre ho dovuto mettere il secondo awk perché, se a sort davo l'opzione -n(ordinamento numerico), sort non mi ordinava rispetto al uid. Se qualcuno mi potesse spiegare esattamente dove ho sbagliato, gliene sarei grata |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Dec 2005
Messaggi: 558
|
Il tuo script mette in una variabile la lista che ottieni. I caratteri di newline non vengono considerati. Quello che devi fare probabilmente è usare printf("%d %d\n", $2, $1) e poi passare l'opzione -e a echo.
Cmq puoi usare sort per dirgli direttamente di fare il sort (numerico se vuoi) direttamente rispetto ad un dato campo. Ad esempio con sort -n -k 2 lui fa un sort numerico rispetto al secondo campo. Inoltre puoi evitare di utilizzare awk tramite il comando cut. Ad esempio se vuoi prendere primo e terzo campo del file /etc/passwd ti basta dare cut -d':' -f1,3 --output-delimiter=' ' /etc/passwd |
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Nov 2010
Città: Messina
Messaggi: 2
|
Grazie, adesso ho le idee un pò più chiare
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:41.



















