Ajouter une colonne dans un fichier

Résolu/Fermé
ulrich - 21 juin 2017 à 17:12
 ulrich - 22 juin 2017 à 11:58
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 !
A voir également:

1 réponse

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 419
21 juin 2017 à 17:18
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
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
UnGnU Messages postés 1158 Date d'inscription lundi 2 mai 2016 Statut Contributeur Dernière intervention 22 décembre 2020 157 > ulrich
22 juin 2017 à 10:47
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
ulrich > UnGnU Messages postés 1158 Date d'inscription lundi 2 mai 2016 Statut Contributeur Dernière intervention 22 décembre 2020
22 juin 2017 à 10:59
oui tout à fait.
0
UnGnU Messages postés 1158 Date d'inscription lundi 2 mai 2016 Statut Contributeur Dernière intervention 22 décembre 2020 157 > ulrich
22 juin 2017 à 11:37
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
ulrich > UnGnU Messages postés 1158 Date d'inscription lundi 2 mai 2016 Statut Contributeur Dernière intervention 22 décembre 2020
22 juin 2017 à 11:58
ok super merci.
0