Modifier fichier csv avec sed

Résolu
thomas -  
 thomas -
Bonjour,
je débute en sed depuis quelques jours et j ai pas encore le niveau pour accomplir la tache suivante :
j ai un fichier csv contenant une liste de login , host (ex @hotmail.com), password, champ4, champ5, etc ... séparés par des ","

cependant certaines lignes ne contiennent pas le champ host, soit elles contiennent un champ vide (,,) et c est bon, soit elles le sautent (login,password) et ca c est pas bon c est ce que je dois corriger, et rajouter une "," dans ces cas la

donc mon code sed doit identifier les lignes ne contenant pas de @ et parmis celles ci identifier celles dont la première occurrence de "," n est pas directement suivie dune deuxième "," et la rajouter, et modifier le fichier (ca je sais -i :p)

ex:
toto,@hotmail.com,tutu,bla1,bla2 <--ok
titi,,tata,bla1,bla2 <--ok
tete,tyty,bla1,bla2 pas bon, je dois rajouter le champs host vide (,,)

merci de votre aide

1 réponse

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

    $ cat thomas
    toto,@hotmail.com,tutu,bla1,bla2
    titi,,tata,bla1,bla2
    tete,tyty,bla1,bla2
    toto,@hotmail.com,tutu,bla1,bla2
    titi,,tata,bla1,bla2
    tete,tyty,bla1,bla2
    
    $ sed  '/@/!{/[^,]*,,/!s/,/&,/}' thomas
    toto,@hotmail.com,tutu,bla1,bla2
    titi,,tata,bla1,bla2
    tete,,tyty,bla1,bla2
    toto,@hotmail.com,tutu,bla1,bla2
    titi,,tata,bla1,bla2
    tete,,tyty,bla1,bla2
    
    $

    ;-))
    0
    1. thomas
       
      ahahah trop fort :p , j m en doutais que ca pouvais s faire en une ligne
      merci :)
      0