2010-06-18 40 views
0

我有很多行包含XXXXXXXXX-XXX.XXX数字格式。我想换号XXXXXXXXX-XXX.XXXXX.XXX.XXX.X-XXX.XXX更改编号格式

XXXXXXXXX-XXX.XXX = 15位随机数

任何人都可以帮我吗?在此先感谢

回答

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' 
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/') 
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 

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

+0

不好意思啊,我误读。蒂姆的回答是正确的。你明白了... – laher 2010-06-18 11:33:02