我试图用“_”替换日期输出中的空格,但没有成功。
$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