Ajouter une colonne dans un fichier

Résolu
ulrich -  
 ulrich -
Bonjour,

Je rencontre actuellement un problème, j'ai le fichier suivant :
cat test2
myserver1.domain.test 10.10.1.12
myserver2.domain.test 10.10.1.13


Je souhaite rajouter un champ à la fin de chaque ligne avec le "$hostname", comme ceci

cat test2
myserver1.domain.test 10.10.1.12 myserver1
myserver2.domain.test 10.10.1.13 myserver2


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 fich 
    myserver1.domain.test 10.10.1.12
    myserver2.domain.test 10.10.1.13

    $ sed 's/\([^.]*\)\(\..*\)/\1\2 \1/' fich
    myserver1.domain.test 10.10.1.12 myserver1
    myserver2.domain.test 10.10.1.13 myserver2


    Si ça fait bien ce que tu veux sur le fichier, tu rajoutes l'option "-i.bak" à
    sed
    pour écrire directement dans le fichier :
    sed -i.bak 's/\([^.]*\)\(\..*\)/\1\2 \1/' fich

    0
    1. ulrich
       
      Salut,

      Merci de ta réponse, en faite çà répond exactement à mon problème sauf pour quelques lignes qui ne sont pas formatées de la même manière, comme celle-ci :
      cat test2 
      10.10.1.50 myserver13-test-sup.domain.prd.trp


      Merci d'avance,
      0
      1. UnGnU Messages postés 1468 Statut Contributeur 158 > ulrich
         
        Salut,

        Et dans ce cas là tu veux toujours la même chose, c'est à dire rajouter le nom du serveur en fin de ligne ?

        Du style :
        10.10.1.50 myserver13-test-sup.domain.prd.trp myserver13-test-sup
        ?
        0
      2. ulrich > UnGnU Messages postés 1468 Statut Contributeur
         
        oui tout à fait.
        0
      3. UnGnU Messages postés 1468 Statut Contributeur 158 > ulrich
         
        Il suffit de rajouter "([[:alpha:]]" dans la 1ère regex :

        $ cat fich
        myserver1.domain.test 10.10.1.12
        myserver2.domain.test 10.10.1.13
        10.10.1.50 myserver13-test-sup.domain.prd.trp

        $ sed 's/\([[:alpha:]][^.]*\)\(\..*\)/\1\2 \1/' fich
        myserver1.domain.test 10.10.1.12 myserver1
        myserver2.domain.test 10.10.1.13 myserver2
        10.10.1.50 myserver13-test-sup.domain.prd.trp myserver13-test-sup


        Bien sûr en supposant qu'aucun nom de machine ne commence par un chiffre ;-\
        0
      4. ulrich > UnGnU Messages postés 1468 Statut Contributeur
         
        ok super merci.
        0