12

所以我需要将日期转换为不同的格式。使用 bash 管道,我从上次控制台登录中获取日期,并使用 awk 提取相关位,如下所示:

last $USER | grep console | head -1 | awk '{print $4, $5}'

哪个输出:(Aug 08 在这种情况下,$4=Aug $5=08。)

现在,我想将“Aug 08”放入date命令中,将格式更改为数字日期。

看起来像这样:

date -j -f %b\ %d Aug\ 08 +%m-%d

产出:08-08

我的问题是,如何将其添加到我的管道中并使用 awk 变量 $4 和 $5 ,其中“Aug 08”在该日期命令中?

4

4 回答 4

16

您只需要使用命令替换:

date ... $(last $USER | ... | awk '...') ...

Bash 将评估里面的命令/管道$(...)并将结果放在那里。

于 2010-08-10T18:54:44.163 回答
5

拨打awk电话date

... | awk '{system("date -j -f %b\ %d \"" $4 $5 "\" +%b-%d")}'

或使用进程替换从以下位置检索输出awk

date -j -f %b\ %d "$(... | awk '{print $4, $5}')" +%b-%d
于 2010-08-10T19:04:00.007 回答
0

使用反引号应该可以使您的长管道的输出保持最新。

日期 -j -f %b\ %d \`最后 $USER | grep 控制台 | 头-1 | awk '{打印 $4, $5}'\` +%b-%d
于 2010-08-10T18:57:13.180 回答
-1

我猜你已经试过了?

last $USER | grep console | head -1 | awk | date -j -f %b\ %d $4 $5 +%b-%d
于 2010-08-10T18:54:54.760 回答