So I need to convert a date to a different format. With a bash pipeline, I'm taking the da开发者_JS百科te from the last console login, and pulling the relevant bits out with awk, like so:
last $USER | grep console | head -1 | awk '{print $4, $5}'
Which outputs: Aug 08
($4=Aug $5=08, in this case.)
Now, I want to take 'Aug 08' and put it into a date
command to change the format to a numerical date.
Which would look something like this:
date -j -f %b\ %d Aug\ 08 +%m-%d
Outputs: 08-08
The question I have is, how do I add that to my pipeline and use the awk variables $4 and $5 where 'Aug 08' is in that date command?
You just need to use command substitution:
date ... $(last $USER | ... | awk '...') ...
Bash will evaluate the command/pipeline inside the $(...)
and place the result there.
Get awk
to call date
:
... | awk '{system("date -j -f %b\ %d \"" $4 $5 "\" +%b-%d")}'
Or use process substitution to retrieve the output from awk
:
date -j -f %b\ %d "$(... | awk '{print $4, $5}')" +%b-%d
Using back ticks should work to get the output of your long pipeline into date.
date -j -f %b\ %d \`last $USER | grep console | head -1 | awk '{print $4, $5}'\` +%b-%d
I'm guessing you already tried this?
last $USER | grep console | head -1 | awk | date -j -f %b\ %d $4 $5 +%b-%d
精彩评论