Manip de chaines de caractères sous LINUX

Fermé
Claude-Lacroix Messages postés 1 Date d'inscription jeudi 10 septembre 2009 Statut Membre Dernière intervention 10 septembre 2009 - 10 sept. 2009 à 16:28
 Claude Lacroix - 14 sept. 2009 à 10:29
Bonjour,
Je dois fabriquer un fichier 2 à partir d'un fichier 1.
Le fichier 2 contiendra plus d'infos que dans le fichier 1.
Les infos du fichier 2 seront 'calculées' à partir du fichier 1
en clair :
contenu du fichier 1 qui est une sorte de .CSV :

toto;tata;10.20.30.40;titi;tutu
roro;rara;10.21.31.41;riri;ruru

Le fichier 2 devrait contenir ceci :

toto;tata;10.20.30.38;10.20.30.39;10.20.30.40,titi;tutu
roro;rara;10.21.31.39,10.21.31.40,10.21.31.41;riri;ruru

On voit que le champ 3 (adresses IP ) du fichier 1 a servi à générer un nouveau champ 3 et champ 4 dans le fichier 2.
Ces adresses IP sont les mêmes mais avec le dernier octet en -1 et -2.
Ces 2 nouveaux champs ont été insérés dans les données existantes.

Y a-t-il une solution à ce problème ?????
Merci

2 réponses

dubcek Messages postés 18744 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 4 septembre 2024 5 617
10 sept. 2009 à 17:22
hello
$ cat a1
toto;tata;10.20.30.40;titi;tutu
roro;rara;10.21.31.41;riri;ruru

$ awk -F "[\.;]" '{n=$3 "." $4 "." $5 "." ; print $1 ";" $2 ";" n $6-2 ";" n $6-1 ";" n $6 ";" $7 ";" $8}' < a1
toto;tata;10.20.30.38;10.20.30.39;10.20.30.40;titi;tutu
roro;rara;10.21.31.39;10.21.31.40;10.21.31.41;riri;ruru
0
Claude Lacroix
14 sept. 2009 à 10:29
Merci !
C'est OK
0