Wie verwende ich Ausgabe von awk in einem anderen Befehl?
Frage
Also brauche ich ein Datum in ein anderes Format zu konvertieren. Mit einer Bash-Pipeline, bin ich das Datum der letzten Konsole Login nehmen, und zieht die entsprechenden Bits aus mit awk, etwa so:
last $USER | grep console | head -1 | awk '{print $4, $5}'
Welche Ausgänge: Aug 08
($ 4 = 5. August $ = 08, in diesem Fall).
Jetzt will ich ‚8. August‘ nehmen und es in einen date
Befehl setzen Sie das Format auf ein numerisches Datum zu ändern.
, die wie folgt aussehen:
date -j -f %b\ %d Aug\ 08 +%m-%d
Ausgänge: 08-08
Die Frage, die ich habe, ist, wie füge ich das meine Pipeline und verwenden die awk Variablen $ 4 und $ 5, wo ‚8. August‘ in diesem Befehl date ist?
Lösung
Sie müssen nur zur Verwendung von Befehl Substitution:
date ... $(last $USER | ... | awk '...') ...
Bash den Befehl / Pipeline innerhalb des $(...)
auswerten und das Ergebnis gibt.
Andere Tipps
Get awk
auf Anruf date
:
... | awk '{system("date -j -f %b\ %d \"" $4 $5 "\" +%b-%d")}'
oder Substitution Verwendung Prozess die Ausgabe von awk
abzurufen:
date -j -f %b\ %d "$(... | awk '{print $4, $5}')" +%b-%d
Ich vermute, Sie schon versucht das?
last $USER | grep console | head -1 | awk | date -j -f %b\ %d $4 $5 +%b-%d
zurück Zecken Mit funktionieren soll die Ausgabe Ihrer langen Pipeline in Datum zu erhalten.
date -j -f %b\ %d \`last $USER | grep console | head -1 | awk '{print $4, $5}'\` +%b-%d