2016-04-27 4 views
1

Wie kann ich last Befehl für jede übereinstimmende Zeile in awk ausführen?Letzte Ausführung in awk [Solaris]

ypcat passwd | awk -F":" '/:John/{ system("last" $1) }' 

Ich versuche, die last Befehl für jeden Benutzer auszuführen, der John genannt wird, aber es hat nichts zu drucken.

Antwort

3

Ihr Ansatz falsch ist, awk Shell nicht. awk ist entworfen, um Text zu manipulieren, nicht andere Werkzeuge rufen aus, das ist, was eine Schale für Dieser kann sein, was Sie wollen, je nachdem, was last ist/tut:

ypcat passwd | awk -F":" '/:John /{print $1}' | xargs last 

oder:

ypcat passwd | awk -F":" '/:John /{print $1}' | xargs -n 1 last 
4

ein Leerzeichen nach last einfügen:

ypcat passwd | awk -F":" '/:John/{system("last " $1)}'