用sed解析日期的输出

Ame*_*ina 1 shell sed date

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

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

$ date | sed 's/ /_/'
Fri_Sep 14 14:10:24 EDT 2012
Run Code Online (Sandbox Code Playgroud)

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

toj*_*son 8

尝试:

$ date | tr ' ' '_'
Run Code Online (Sandbox Code Playgroud)

或者

$ date | sed 's/ /_/g'
Run Code Online (Sandbox Code Playgroud)

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


Sté*_*las 6

只有我的 2 美分。如果您希望将日期作为单个单词,那么理想的格式是ISO 8601 标准2012-09-14T21:08:12。它简洁、明确,其时间顺序与其字母顺序相同。

date +%Y-%m-%dT%T
Run Code Online (Sandbox Code Playgroud)

在某些系统上,您甚至可以将其写为

date +%FT%T
Run Code Online (Sandbox Code Playgroud)

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