#1 Le 26/05/2013, à 18:55
- nefaste-secure
[RESOLU]AWK,COLUMN besoin d'aide merci
Bonjour je cherche actuellement à faire quelque chose qui je ne sais pas si au final est réalisable , mais je suis sur que les plus connaisseur d'entre vous pourrons m'éclairer...je m'explique
j'ai un premier fichier texte sous cette forme :
fileIpPort.txt
192.168.0.10 80
192.168.0.11 8080
192.168.0.12 3128
192.168.0.13 80
192.168.0.14 8080
192.168.0.15 80
etc....
et un second fichier texte sous cette forme :
fileProto.txt
HTTP
HTTPS
HTTP
SOCK4/5
HTTPS
HTTP
etc...
Je cherche à ouvrir en lecture les deux fichiers et les afficher en colonne , j'ai essayé ça :
(cat fileIpPort.txt;cat fileProto.txt | sed 's/.*/:&/g') | awk -F ':' {'print $1,$2'} | column -t
mais le résultat est le suivant (et j'ai du mal à comprendre pourquoi^^)
192.168.0.10 80
192.168.0.11 8080
192.168.0.12 3128
192.168.0.13 80
192.168.0.14 8080
192.168.0.15 80
HTTP
HTTPS
HTTP
SOCK4/5
HTTPS
HTTP
au lieu du résultat souhaité :
192.168.0.10 80 HTTP
192.168.0.11 8080 HTTPS
192.168.0.12 3128 HTTP
192.168.0.13 80 SOCK4/5
192.168.0.14 8080 HTTPS
192.168.0.15 80 HTTP
Je suis actuellement en train de regarder ICI
Merci à ceux qui prendront le temps de lire et de m'éclairer ...
Dernière modification par nefaste-secure (Le 26/05/2013, à 19:37)
Hors ligne
#2 Le 26/05/2013, à 19:29
- pingouinux
Re : [RESOLU]AWK,COLUMN besoin d'aide merci
Bonjour,
Essaye :
paste fichier_1 fichier_2
Hors ligne
#3 Le 26/05/2013, à 19:35
- nefaste-secure
Re : [RESOLU]AWK,COLUMN besoin d'aide merci
Parfait exactement ce que je cherchais
^^, vraiment merci je suis passé à coté ... merci à toi !
Dernière modification par nefaste-secure (Le 26/05/2013, à 19:36)
Hors ligne
#4 Le 26/05/2013, à 19:40
- toulipe
Re : [RESOLU]AWK,COLUMN besoin d'aide merci
Avec python
with open('file1') as f:
lines1 = f.read().splitlines()
with open('file2') as f:
lines2 = f.read().splitlines()
for l1, l2 in zip(lines1, lines2):
print('%s\t%s\t' % (l1, l2))
Dernière modification par toulipe (Le 26/05/2013, à 19:40)
Hors ligne
#5 Le 07/09/2013, à 22:17
- med1986
Re : [RESOLU]AWK,COLUMN besoin d'aide merci
Bonjour,
J'ai ce fichier en entrée :
C1L1;C2L1;C3L1;C4L1;C5L1;C6L1;C7L1;C8L1;C9L1;C10L1;C11L1;C12L1;
C1L2;C2L2;C3L2;C4L2;C5L2;C6L2;C7L2;
C1L3;C2L3;C3L3;C4L3;C5L3;C6L3;C7L3;C8L3;C9L3;
C1L4;C2L4;C3L4;C4L4;C5L4;C6L4;C7L4;C8L4;C9L4;C10L4;C11L4;C12L4;
C1L5;C2L5;C3L5;C4L5;C5L5;C6L5;C7L5;C8L5;
C1L6;C2L6;C3L6;C4L6;C5L6;C6L6;C7L6;C8L6;C9L6;C10L6;C11L6;C12L6;
je veux recuperer uniquement les deux premieres colonnes et les deux dernieres et pas tout ce qui se presente entre les deux qui peut etre variable.
J'ai fait ca
awk -F";" '{
for (j=1; j<2; j++)
if ( j==1 )
printf("%s",$j)
if ( j!=1 )
printf(";%s",$j)
for (i=NF; i>NF-3; i--)
printf("%s;",$i)
print ""
}' fichier_ioda_test
en sortie:
C1L1;C2L1;C12L1;C11L1;
C1L2;C2L2;C7L2;C6L2;
C1L3;C2L3;C9L3;C8L3;
C1L4;C2L4;C12L4;C11L4;
C1L5;C2L5;C8L5;C7L5;
C1L6;C2L6;C12L6;C11L6;
cela est correct, mais le seul soucis est que les deux dernieres colonnes sont inversées, merci de m'aider
Hors ligne
#6 Le 08/09/2013, à 08:51
- pingouinux
Re : [RESOLU]AWK,COLUMN besoin d'aide merci
Bonjour,
awk -F";" '{print $1";"$2";"$(NF-2)";"$(NF-1)";"}' fichier_ioda_test
Ajouté :
mais le seul soucis est que les deux dernieres colonnes sont inversées
C'est parce que tu fais décroître l'indice de la boucle
for (i=NF; i>NF-3; i--)
Voici une façon correcte d'écrire tes boucles
awk -F";" '{
for (j=1; j<3; j++) printf("%s;",$j)
for (i=NF-2; i<NF; i++) printf("%s;",$i)
print ""
}' fichier_ioda_test
Édité :
Voici une autre façon de faire avec sed (qui a l'avantage de ne pas dupliquer les colonnes s'il y en a moins de quatre)
sed -r 's/(([^;]+;){2}).*;(([^;]+;){2})/\1\3/' fichier_ioda_test
Dernière modification par pingouinux (Le 10/09/2013, à 08:59)
Hors ligne