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?

War es hilfreich?

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top