Remplacer chaîne de caractere par un nombre

Fermé
Utilisateur anonyme - 13 juil. 2010 à 16:42
 Utilisateur anonyme - 13 juil. 2010 à 18:06
Bonjour,

j'ai le fichier contenant les lignes suivantes séparées par ":"

6794096:ville darles,13637,arles:fournitures:adapte:02/06/2008:13:01000000:les fleurs d anadia,382975068-18,84260,sarrians

6794096:ville darles,13637,arles:fournitures:adapte:02/06/2008:13:01023000:marcanterra,498260041-21,80120,saint quentin en tourmont

6794096:ville darles,13637,arles:fournitures:adapte:02/06/2008:13:45300000:scea fanfelle gaussens,413850009-15,64110,gelos

sur mon 7ème champ , j'ai un nombre de 8 chiffres et je veux garder que les deux premiers, je ne sais pas le faire dans le fichier avec les autres champs!! je sais le faire avec cut ou awk seulement mai je dois d'abord extraire que le champs 7 mais ce n'est pas ce que je veux , je veux garder tous les champs et faire la modification. je sais avec sed mais je n'arrive pas à ecrire bien la formule :

sed 's /[0-9]{8\}/$1,$2/g' ==> les $1, $2 ne vont pas !!! comment faire svp?? je n'arrive toujours pas à maitriser la commande sed.

le resultat voulu:

6794096:ville darles,13637,arles:fournitures:adapte:02/06/2008:13:01:les fleurs d anadia,382975068-18,84260,sarrians

A voir également:

3 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
13 juil. 2010 à 17:00
Salut,

sed -r 's/([0-9]{2})[0-9]{6}/\1/' fic
0
Utilisateur anonyme
13 juil. 2010 à 17:10
ça ne marche pas !! :-((

siham@megalink:~$ sed -r 's/([0-9]{2})[0-9]{6}/\1/' 2008.textV3

sed: -e expression #1, char 30: unknown option to 's'
0
Utilisateur anonyme
13 juil. 2010 à 17:10
Ah ! Non ! lami20j :'(

J'étais tout content de pouvoir donner une réponse par rapport à ce que vous m'avez appris aujourd'hui :(

J'avais un truc comme
awk -F ":" '{$7=substr($7, 1, 2); print $0}' fichier


mais je suis pas encore au point parce que si je réussis bien à écrire la ligne avec le print, j'arrive pas à modifier le fichier pour autant :s
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
13 juil. 2010 à 17:13
Re,

Ben, ça marche très bien même

~$ cat fic
6794096:ville darles,13637,arles:fournitures:adapte:02/06/2008:13:01000000:les fleurs d anadia,382975068-18,84260,sarrians

6794096:ville darles,13637,arles:fournitures:adapte:02/06/2008:13:01023000:marcanterra,498260041-21,80120,saint quentin en tourmont

6794096:ville darles,13637,arles:fournitures:adapte:02/06/2008:13:45300000:scea fanfelle gaussens,413850009-15,64110,gelos

~$ sed -r 's/([0-9]{2})[0-9]{6}/\1/' fic
6794096:ville darles,13637,arles:fournitures:adapte:02/06/2008:13:01:les fleurs d anadia,382975068-18,84260,sarrians

6794096:ville darles,13637,arles:fournitures:adapte:02/06/2008:13:01:marcanterra,498260041-21,80120,saint quentin en tourmont

6794096:ville darles,13637,arles:fournitures:adapte:02/06/2008:13:45:scea fanfelle gaussens,413850009-15,64110,gelos
0
Utilisateur anonyme
13 juil. 2010 à 17:14
c'est bon sa marche merci beaucoup.
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
13 juil. 2010 à 17:25
Re,

Pour nnj99

awk 'BEGIN{FS=OFS=":"}{substr($7, 1, 2); print }' fic
0
Utilisateur anonyme
13 juil. 2010 à 17:37
en fait , j'ai un autre problème que je viens de voir, des fois j'ai plusieurs nombres séparés par une vergule "," comme suit:

6794096:ville darles,13637,arles:fournitures:adapte:02/06/2008:13:01000000, 01236528, 01569826:les fleurs d anadia,382975068-18,84260,sarrians

6794096:ville darles,13637,arles:fournitures:adapte:02/06/2008:13:01023000:marcanterra,498260041-21,80120,saint quentin en tourmont

et quand j'applique la formule, j'ai ceci:
6794096:ville darles,13637,arles:fournitures:adapte:02/06/2008:13:01, 01236528, 01569826:les fleurs d anadia,382975068-18,84260,sarrians

6794096:ville darles,13637,arles:fournitures:adapte:02/06/2008:13:01:marcanterra,498260041-21,80120,saint quentin en tourmont

sur la premiere ligne je veux garder que le premier nombre composé de deux chiffres (01) et effacer les nombres aprés la virgules (01236528, 01569826).

je fais : sed 's/,[^:]*//g' 2008.textV4 sa marche mais le probleme sa efface meme les données du champ numéro 8 qui viennent apres la virgule et ce n'est pas ce que je veux. donc j essayé comme ceci :
siham@megalink:~$ sed 's/,[^:]([0-9]{8})//g' 2008.textV4
pour dire je veux effacer les nombres de 8 chiffres apres la virgule mais sa marche pas :-((
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
13 juil. 2010 à 17:42
Re,

~$ cat fic
6794096:ville darles,13637,arles:fournitures:adapte:02/06/2008:13:01000000:les fleurs d anadia,382975068-18,84260,sarrians

6794096:ville darles,13637,arles:fournitures:adapte:02/06/2008:13:01023000:marcanterra,498260041-21,80120,saint quentin en tourmont

O6794096:ville darles,13637,arles:fournitures:adapte:02/06/2008:13:45300000:scea fanfelle gaussens,413850009-15,64110,gelos

6794096:ville darles,13637,arles:fournitures:adapte:02/06/2008:13:01000000, 01236528, 01569826:les fleurs d anadia,382975068-18,84260,sarrians

6794096:ville darles,13637,arles:fournitures:adapte:02/06/2008:13:01023000:marcanterra,498260041-21,80120,saint quentin en tourmont 
:~$ sed -r 's/([0-9]{2})[0-9]{6}(,.*)?:/\1:/' fic
6794096:ville darles,13637,arles:fournitures:adapte:02/06/2008:13:01:les fleurs d anadia,382975068-18,84260,sarrians

6794096:ville darles,13637,arles:fournitures:adapte:02/06/2008:13:01:marcanterra,498260041-21,80120,saint quentin en tourmont

O6794096:ville darles,13637,arles:fournitures:adapte:02/06/2008:13:45:scea fanfelle gaussens,413850009-15,64110,gelos

6794096:ville darles,13637,arles:fournitures:adapte:02/06/2008:13:01:les fleurs d anadia,382975068-18,84260,sarrians

6794096:ville darles,13637,arles:fournitures:adapte:02/06/2008:13:01:marcanterra,498260041-21,80120,saint quentin en tourmont 
0
Utilisateur anonyme
13 juil. 2010 à 18:06
mille merci, sa marche bien !! bon courage et bonne fête du 14 juillet
0