[Sed] Remplacer les points par des espaces dans un numéro de téléphone

Remplacer les points par des espaces dans un numéro de téléphone [Sed] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 28-04-2008 à 15:48:45    

Je gère tous mes contacts sous Thunderbird et j'ai eu la mauvaise habitude d'enregistrer tous les n° de téléphone sous la forme 01.02.03.04.05 au lieu de la forme (conforme à la normalisation française) 01 02 03 04 05 (avec des espaces donc).
 
J'essaye depuis une bonne heure de trouver la commande qui va bien, sans succès. Voilà où j'en suis resté :

Code :
  1. sed -e "s/^\([0-9][0-9]\)\.\([0-9][0-9]\)\.\([0-9][0-9]\)\.\([0-9][0-9]\)\.\([0-9][0-9]\)$/^\([0-9][0-9]\)\ \([0-9][0-9]\)\ \([0-9][0-9]\)\ \([0-9][0-9]\)\ \([0-9][0-9]\)$/g" abook.mab > abook.mab.new


Avant j'avais essayé plus simple, mais déjà sans succès :

Code :
  1. sed -e 's/^[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9]$/^[0-9][0-9]\ [0-9][0-9]\ [0-9][0-9]\ [0-9][0-9]\ [0-9][0-9]$/g' abook.mab > abook.mab.new


 
Si quelqu'un peu me dépanner, c'est pas de refus :)


Message édité par ecliptux le 28-04-2008 à 16:22:07
Reply

Marsh Posté le 28-04-2008 à 15:48:45   

Reply

Marsh Posté le 28-04-2008 à 15:59:58    

Voici ce que ça donnerait en perl :

~> echo 12.34.56.78.90 | perl -pne 's/(\d\d)\.(\d\d)\.(\d\d)\.(\d\d)\.(\d\d)/$1 $2 $3 $4 $5/g'
12 34 56 78 90


Y a plein d'autres méthodes pour faire ça plus joliment, mais c'est ce qui se rapproche le plus de ce que tu voulais faire. En sed, ça s'écrit à peu près pareil sauf que c'est encore moins lisible...


Message édité par franceso le 28-04-2008 à 16:00:23

---------------
TriScale innov
Reply

Marsh Posté le 28-04-2008 à 16:12:01    

merci franceso mais comment l'appliquer à un fichier avec moult numéros ?
 
L'idée étant d'utiliser une expression régulière pour chopper tous les n° de tél. à la volée...

Reply

Marsh Posté le 28-04-2008 à 16:16:04    

exactement de la même manière que si c'était sed ou n'importe quoi d'autre qui faisait la transformation :

perl -pne gnagnagna abook.mab > abook.mab.new


---------------
TriScale innov
Reply

Marsh Posté le 28-04-2008 à 16:21:33    

Autant pour moi, je n'avais pas bien saisi la manip :)
Ça a fonctionné, merci bcp :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed