更改数字格式

时间:2010-06-18 11:20:49

标签: regex sed awk

我有很多行包含XXXXXXXXX-XXX.XXX数字格式。我希望将号码XXXXXXXXX-XXX.XXX更改为XX.XXX.XXX.X-XXX.XXX

XXXXXXXXX-XXX.XXX = 15位随机数

任何人都可以帮助我吗?提前致谢

3 个答案:

答案 0 :(得分:2)

常规正则表达式:搜索(\d{2})(\d{3})(\d{3})(\d)-(\d{3}\.\d{3})并替换为\1.\2.\3.\4-\5

我不太了解sed,但我认为语法有点不同。试试这个:

sed 's/\([0-9]\{2\}\)\([0-9]\{3\}\)\([0-9]\{3\}\)\([0-9]\)-\([0-9]\{3\}\.[0-9]\{3\}\)/\1.\2.\3.\4-\5/')

答案 1 :(得分:0)

试试这个:

 echo "987654321" | sed 's/\([0-9][0-9]\)\([0-9][0-9][0-9]\)\([0-9][0-9][0-9]\)\([0-9]\)/\1.\2.\3.\4/'

(输出98.765.432.1)

然后,从文件读取输入:

sed 's/\([0-9][0-9]\)\([0-9][0-9][0-9]\)\([0-9][0-9][0-9]\)\([0-9]\)/\1.\2.\3.\4/' in.txt

,用于写入新文件:

sed 's/\([0-9][0-9]\)\([0-9][0-9][0-9]\)\([0-9][0-9][0-9]\)\([0-9]\)/\1.\2.\3.\4/' in.txt > out.txt

我想你可以改进它,但这是一般的想法。

答案 2 :(得分:0)

这很丑陋(因为sed使用POSIX正则表达式),但应该有效:

sed 's/\([0-9]\{2\}\)\([0-9]\{3\}\)\([0-9]\{3\}\)\([0-9]\)\(-[0-9]\{3\}\.[0-9]\{3\}\)/\1.\2.\3.\4\5/g'