我一般都是Linux新手,我想使用sed命令更改日志文件的格式:
当前格式:
2016-09-27file.txt::2016-09-27 18:00:00
预期格式:
2016-09-27file.txt::2016/09/27-18:00:00
我该如何编写sed命令?
谢谢, ž
答案 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})
,对其他人也是如此#
是使用的分隔符,而不是通常的/
,这使得无需转义替换字符串中的/