使用 grep awk 或其他任何方式处理 Linux 文本

使用 grep awk 或其他任何方式处理 Linux 文本

我想Wed Apr 10 06:44:10 UTC 2019用逗号替换此字符串中的所有空格,并修剪掉UTC部分。

我已尝试过:

var1="Wed Apr 10 06:44:10 UTC 2019"
echo ${var// /,}

这样就可以删除所有空格,但是如何修剪 UTC 部分呢,我想在一行命令中实现这一点。

答案1

在我看来,通常将时间字符串视为时间而不是文本 细绳。

使用date命令来让时间戳以您想要的格式显示,并执行如下操作:

var1="Wed Apr 10 06:44:10 UTC 2019"
date --date="$var1" +%Y,%m,%d  

例如,您还可以确保“4 月 9 日,星期三”的日期部分得到填充,09等等。

答案2

如果您只想操作现有字符串并删除“UTC 2019”或“UTC”:

# remove "UTC 2019"
$ echo ${var1/UTC*}|tr ' ' ,
Wed,Apr,10,06:44:10

# store the result in a variable
$ var2=$(echo ${var1/UTC*}|tr ' ' ,)

# remove "UTC"
$ echo ${var1/UTC}|tr ' ' ,
Wed,Apr,10,06:44:10,2019

答案3

“危险,威尔·罗宾逊!”

虽然不是很明显,但请注意这一点:

如果机器上的时区变化然后,突然间,日期不是不再使用 UTC,因此您编写的任何删除“UTC”名称的代码都不会执行任何操作,并且结果中会留下一个额外的值,这会破坏您的下游逻辑。

Wed Apr 10 06:44:10 UTC 2019  ->  Wed,Apr,10,06:44:10,2019       OK

Wed Apr 10 11:22:18 BST 2019  ->  Wed,Apr,10,11:22:18,BST,2019   Oops!
                    ^^^                               ^^^

正如其他人所说,以更可预测的方式格式化您的日期。

相关内容