使用sed格式化时间戳输出

时间:2016-09-28 15:53:59

标签: linux sed timestamp

我一般都是Linux新手,我想使用sed命令更改日志文件的格式:

当前格式:

2016-09-27file.txt::2016-09-27 18:00:00

预期格式:

2016-09-27file.txt::2016/09/27-18:00:00

我该如何编写sed命令?

谢谢, ž

3 个答案:

答案 0 :(得分:1)

以下显示如何在一行中执行此操作:

echo "2016-09-27file.txt::2016-09-27 18:00:00" | sed 's/\([0-9]*\)-\([0-9]*\)-\([0-9]*\) /\1\/\2\/\3-/'

regexp部分匹配您要替换的日期部分,也可以拆分为子表达式,以使这些部分可以替换部分。

答案 1 :(得分:0)

sed -i 's/-///g' "$filename"

sed -i 's/ /-/g' "$filename"

试试这个。

答案 2 :(得分:0)

这是一个perl版本

$ echo '2016-09-27file.txt::2016-09-27 18:00:00' | perl -pe 's#::\K(\d{4})-(\d{2})-(\d{2}) #$1/$2/$3-#'
2016-09-27file.txt::2016/09/27-18:00:00
  • ::\K肯定的背后,检查是否存在::,不会被替换
  • (\d{4})-(\d{2})-(\d{2})捕捉日期
  • $1/$2/$3-重新格式化,$1对应于捕获组(\d{4}),对其他人也是如此
  • #是使用的分隔符,而不是通常的/,这使得无需转义替换字符串中的/