Ajouter une colonne dans un fichier

Résolu/Fermé
Signaler
-
 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

Messages postés
36324
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 480
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

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,
Messages postés
1156
Date d'inscription
lundi 2 mai 2016
Statut
Contributeur
Dernière intervention
22 décembre 2020
153 > 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
?
>
Messages postés
1156
Date d'inscription
lundi 2 mai 2016
Statut
Contributeur
Dernière intervention
22 décembre 2020

oui tout à fait.
Messages postés
1156
Date d'inscription
lundi 2 mai 2016
Statut
Contributeur
Dernière intervention
22 décembre 2020
153 > 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 ;-\
>
Messages postés
1156
Date d'inscription
lundi 2 mai 2016
Statut
Contributeur
Dernière intervention
22 décembre 2020

ok super merci.