2011-07-27 62 views

回答

0

下面将只匹配上的四个数字的字符串,然后是两个数字字符串进行更换。

$ echo '201107' | sed 's/\([0-9]\{4\}\)\([0-9]\{2\}\)/\1-\2/' 
2011-07 

桑达正则表达式是一个有点尴尬,因为缺乏的\d,并且需要逃避括号和括号(但不brakets)。我的解决方案应该's/(\d{4})(\d{2})/\1-\2/'如果没有这些特点。

18
echo "201107" | sed 's/201107/2011-07/' 

应该工作。但只是在开玩笑,这里的更广泛的解决方案:

echo "201107" | sed 's/^\(.\{4\}\)/\1-/' 

这将前四个字符后插入一个-

HTH

0

我知道这是陷了一个巨大的恐龙,但如果你想消除拖尾6个零点

echo '20110715000000' | sed 's/\([0-9]\{4\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)\([0-9]\{6\}\)/\1-\2-\3/' 
相关问题