使用 sed 解析日期输出

使用 sed 解析日期输出

我试图用“_”替换日期输出中的空格,但没有成功。

$date
Fri Sep 14 14:10:04 EDT 2012

$ date | sed 's/ /_/'
Fri_Sep 14 14:10:24 EDT 2012

如您所见,最后一个命令仅将第一个空格替换为_'.为什么它跳过其他空格?

答案1

尝试:

$ date | tr ' ' '_'

或者

$ date | sed 's/ /_/g'

您的命令仅替换日期输入中的第一个匹配实例,因为这是 的默认行为sed。通过将g(全局替换)选项添加到命令末尾,sed将匹配并替换所有出现的表达式。

答案2

只是我的2分钱。如果您想要将日期作为单个单词,一个好的格式是ISO 8601标准2012-09-14T21:08:12。它简洁、明确,并且其时间顺序与字母顺序相同。

date +%Y-%m-%dT%T

在某些系统上你甚至可以写成

date +%FT%T

但请注意,在实施夏令时的时区,这仍然是不明确的。添加%z可以消除歧义,但无助于排序。另一种选择是显示与时区无关的UTC 时间(带有-u)或 Unix 纪元时间(是某些实现)。%s

相关内容