2010-06-18 3 views
0

J'ai beaucoup de lignes contient XXXXXXXXX-XXX.XXX nombre format. Je veux changer le numéro XXXXXXXXX-XXX.XXX à XX.XXX.XXX.X-XXX.XXXChanger numéro Format

XXXXXXXXX-XXX.XXX = 15 chiffres nombre aléatoire

Tout le monde peut me aider? Merci d'avance

Répondre

0

C'est laid (parce que sed utilise POSIX regex), mais devrait fonctionner:

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

General regex: Recherchez (\d{2})(\d{3})(\d{3})(\d)-(\d{3}\.\d{3}) et remplacez par \1.\2.\3.\4-\5. Je ne sais pas sed assez bien, mais je pense que la syntaxe est un peu différente. Essayez ceci:

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

Essayez ceci:

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

(cette commande affiche 98.765.432.1)

Ensuite, pour l'entrée lecture d'un fichier:

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 

et, pour écrire dans un nouveau fichier:

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 

Je suppose que vous pourriez l'affiner, mais c'est l'idée générale.

+0

Ah désolé, je mal lu. La réponse de Tim est correcte. Vous avez eu l'idée ... – laher

Questions connexes