如何在另一个命令中使用awk的输出?

时间:2010-08-10 18:51:31

标签: bash awk pipeline

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

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

哪些输出:Aug 08 (4美元= 8月5日= 08,在这种情况下。)

现在,我想采用'Aug 08'并将其放入date命令,将格式更改为数字日期。

看起来像这样:

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

输出:08-08

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

4 个答案:

答案 0 :(得分:7)

您只需要使用命令替换:

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

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

答案 1 :(得分:4)

获取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

答案 2 :(得分:0)

我猜你已经试过了吗?

last $USER | grep console | head -1 | awk | date -j -f %b\ %d $4 $5 +%b-%d

答案 3 :(得分:0)

使用反向标记应该可以使长管道的输出到达日期。

date -j -f %b\ %d \`last $USER | grep console | head -1 | awk '{print $4, $5}'\` +%b-%d