Utilisation de sed

Fermé
Utilisateur anonyme - 28 juil. 2010 à 17:21
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 28 juil. 2010 à 18:16
Bonjour,

Je reviens vers vous pour la 3éme fois (pour ne pas dire la n éme fois) car je n'arrive toujours pas à bien comprendre la commande "sed" :

j'ai mon fichier composé de 8 champs séparés par ";" et contenant les lignes suivantes:

01 ; 6407385 ; ville de clamart,92140,clamart ; fournitures ; ouvert ; 28/01/2008 ; 92 ; daniel loiseau gamme,333436418-37,94310,orly

01 ; 6407385 : ville de clamart,92140,clamart ; fournitures ; ouvert ; 28/01/2008 ; 92 ; ede ruy,304914211-20,69200,venissieux

sur le champ 8 qui est composé lui meme de 4 champs séparés par "," je veux supprimer ce qui vient aprés le tiret pour le 2éme champ comme ceci:

01 ; 6407385 ; ville de clamart,92140,clamart ; fournitures ; ouvert ; 28/01/2008 ; 92 ; daniel loiseau gamme,333436418,94310,orly

01 ; 6407385 : ville de clamart,92140,clamart ; fournitures ; ouvert ; 28/01/2008 ; 92 ; ede ruy,304914211,69200,venissieux

j'ai essayé toutes les possibilité de remplacement depuis ce matin mais toutes les formules ne marche pas!! est ce que quelqu'un pourra m'aider svp??

j'ai cette formule que vous m'avez dictée sed -r 's/(.*;)([^,]*),([^-]*)-(.*)/\1\3/'mon-fichier mais elle me supprime tous le champ 8 et elle garde que le chiffre. (01 ; 6407385 ; ville de clamart,92140,clamart ; fournitures ; ouvert ; 28/01/2008 ; 92 ; 333436418)

1 réponse

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
28 juil. 2010 à 17:31
Salut,

sed -r 's/(.*;)([^,]*,)([^-]*)-[^,]*(.*)/\1\2\3\4/'


Post de référence
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
28 juil. 2010 à 17:37
Rectificatif, c'est mieux comme ça :

sed -r 's/(.*;)([^-]*)-[^,]*(.*)/\1\2\3/'

;-))
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
28 juil. 2010 à 18:16
par contre est ce que vous pouvez m'expliquer le [^,]*

Ben c'est le même principe que "[^-]*", à part qu'ici on remplace le tiret par une virgule, donc on englobe tout ce qu'il y a après le tiret jusqu'à ce qu'on rencontre une virgule.
0