![使用 grep awk 或其他任何方式处理 Linux 文本](https://linux22.com/image/736325/%E4%BD%BF%E7%94%A8%20grep%20awk%20%E6%88%96%E5%85%B6%E4%BB%96%E4%BB%BB%E4%BD%95%E6%96%B9%E5%BC%8F%E5%A4%84%E7%90%86%20Linux%20%E6%96%87%E6%9C%AC.png)
我想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!
^^^ ^^^
正如其他人所说,以更可预测的方式格式化您的日期。