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

发布于 2024-09-13 08:54:42 字数 425 浏览 7 评论 0原文

所以我需要将日期转换为不同的格式。使用 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”位于该日期命令中?

So I need to convert a date to a different format. With a bash pipeline, I'm taking the date 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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

您只需要使用命令替换:

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

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

You just need to use command substitution:

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

Bash will evaluate the command/pipeline inside the $(...) and place the result there.

自由如风 2024-09-20 08:54:42

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

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
梦在夏天 2024-09-20 08:54:42

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

date -j -f %b\ %d \`last $USER | grep console | head -1 | 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
橪书 2024-09-20 08:54:42

我猜你已经尝试过这个了吗?

last $USER | grep console | head -1 | awk | date -j -f %b\ %d $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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文