Recherche avec AWK + formatage
Résolu/Fermé
GHISLINO
Messages postés
214
Date d'inscription
lundi 25 juillet 2011
Statut
Membre
Dernière intervention
8 décembre 2023
-
31 déc. 2014 à 15:11
GHISLINO Messages postés 214 Date d'inscription lundi 25 juillet 2011 Statut Membre Dernière intervention 8 décembre 2023 - 8 avril 2015 à 17:22
GHISLINO Messages postés 214 Date d'inscription lundi 25 juillet 2011 Statut Membre Dernière intervention 8 décembre 2023 - 8 avril 2015 à 17:22
A voir également:
- Recherche avec AWK + formatage
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Formatage pc - Guide
- Formatage - Guide
- Recherche avec photo - Guide
- Recherche adresse - Guide
7 réponses
mamiemando
Messages postés
33549
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
4 mars 2025
7 829
31 déc. 2014 à 17:15
31 déc. 2014 à 17:15
Ce n'est pas super clair. Si j'ai bien compris tu groupes suivant la deuxième colonne (donc tu as les agrégats : Douggoy-AG_EXN_002, Douggoy-D-AG_EXN_002, Maroua-Marche-Abattoir_EXN_085, aroua-Marche-Abattoir-D_EXN_085).
1) Déjà pourquoi dans ton exemple, il n'y a pas de ligne faisant intervenir les lignes D_EXN ?
Ensuite si on regarde cette ligne :
... tu gardes 1205 (première ligne contenant Douggoy-AG_EXN_002, 6e colonne).
2) Donc tu ignores les valeurs colonne 6 intervenant dans les lignes suivantes ? (1206, 1207) ? Pourquoi ?
Ensuite tu as deux triplets (5-4-5) et (6-6-6). Si j'ai bien compris cela correspond aux valeurs apparaissant dans la dernière colonne pour les agrégats Douggoy-AG_EXN_002, Douggoy-D-AG_EXN_002.
3) Est-ce bien ça ?
Dans les grandes lignes :
- change ton input field separator (IFS en awk) pour utiliser ";" (option -F, ou initialise IFS dans la section BEGIN)
- Lis ton fichier ligne par ligne et vérifie qu'elle forme bien un tableau de 8 cellules.
- Tu peux extraire dans la 2e colonne la partie qui t'intéresse en splittant la chaîne sur le caractère '_' (voir fonction patsplit).
- Ensuite il faut maintenir un tableau dans lequel tu mémorises les valeurs correspondants dans File 2 aux deux dernières colonnes.
https://www.thegeekstuff.com/2010/03/awk-arrays-explained-with-5-practical-examples/
Bonne chance
1) Déjà pourquoi dans ton exemple, il n'y a pas de ligne faisant intervenir les lignes D_EXN ?
Ensuite si on regarde cette ligne :
Douggoy-AG_EXN_002;8;7005;Maroua_Zokok-MX;70;1205;5-4-5;6-6-6
... tu gardes 1205 (première ligne contenant Douggoy-AG_EXN_002, 6e colonne).
2) Donc tu ignores les valeurs colonne 6 intervenant dans les lignes suivantes ? (1206, 1207) ? Pourquoi ?
Ensuite tu as deux triplets (5-4-5) et (6-6-6). Si j'ai bien compris cela correspond aux valeurs apparaissant dans la dernière colonne pour les agrégats Douggoy-AG_EXN_002, Douggoy-D-AG_EXN_002.
3) Est-ce bien ça ?
Dans les grandes lignes :
- change ton input field separator (IFS en awk) pour utiliser ";" (option -F, ou initialise IFS dans la section BEGIN)
- Lis ton fichier ligne par ligne et vérifie qu'elle forme bien un tableau de 8 cellules.
- Tu peux extraire dans la 2e colonne la partie qui t'intéresse en splittant la chaîne sur le caractère '_' (voir fonction patsplit).
- Ensuite il faut maintenir un tableau dans lequel tu mémorises les valeurs correspondants dans File 2 aux deux dernières colonnes.
https://www.thegeekstuff.com/2010/03/awk-arrays-explained-with-5-practical-examples/
Bonne chance
GHISLINO
Messages postés
214
Date d'inscription
lundi 25 juillet 2011
Statut
Membre
Dernière intervention
8 décembre 2023
31 déc. 2014 à 18:42
31 déc. 2014 à 18:42
Bonsoir mamiemando
Bonne et heureuse annee 2015
Merci pour ton retour .
En effet j'ai fait une erreur dans le fichier de sortie File2 , ci-dessous ce que je devrait obtenir normalement :
File2
Merci
Cdlt.
Bonne et heureuse annee 2015
Merci pour ton retour .
En effet j'ai fait une erreur dans le fichier de sortie File2 , ci-dessous ce que je devrait obtenir normalement :
File2
Douggoy-AG_EXN_002;8;7005;Maroua_Zokok-MX;70;1205;5-4-5
Douggoy-D-AG_EXN_002;16;7012;Maroua_Zokok-MX;70;21707;6-6-6
Maroua-Marche-Abattoir_EXN_085;16;16511;Maroua_Zokok-MX;70;16511;3-0-6
Maroua-Marche-Abattoir-D_EXN_085;16;41321;Maroua_Zokok-MX;70;41321;6-4-6
Merci
Cdlt.
mamiemando
Messages postés
33549
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
4 mars 2025
7 829
1 janv. 2015 à 20:36
1 janv. 2015 à 20:36
Et du coup avec les indications que je t'ai données, tu es débloqué ? Meilleurs voeux également :-)
dubcek
Messages postés
18765
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
20 février 2025
5 626
2 janv. 2015 à 09:23
2 janv. 2015 à 09:23
hello
bonne année
quel est le critère pour le champ 6 ?
bonne année
quel est le critère pour le champ 6 ?
$ awk -F ";" '{p=FS; s[$2]=$9 "-" s[$2]; t[$2]=$2 p $3 p $4 p $5 p $6 p $7} END {for (n in t){$0=t[n] p s[n]; sub("-$", ""); print}}' fichier | sort
Douggoy-AG_EXN_002;8;7005;Maroua_Zokok-MX;70;1207;5-4-5
Douggoy-D-AG_EXN_002;16;7012;Maroua_Zokok-MX;70;21709;6-6-6
Maroua-Marche-Abattoir-D_EXN_085;16;41321;Maroua_Zokok-MX;70;41323;6-4-6
Maroua-Marche-Abattoir_EXN_085;16;16511;Maroua_Zokok-MX;70;16513;6-3
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
GHISLINO
Messages postés
214
Date d'inscription
lundi 25 juillet 2011
Statut
Membre
Dernière intervention
8 décembre 2023
2 janv. 2015 à 12:30
2 janv. 2015 à 12:30
Bonjour Dubcek
Meilleur voeux ,
desole ,Normalement le champ 5 et 6 j en aurais plus besoin.
donc je devrais avoir ceci
juste que pour cette ligne (Maroua-Marche-Abattoir_EXN_085;16;16511;6-3) je voudrais avoir
le Zero represente la ligne Maroua-Marche-Abattoir-HR_2 qui n'existe pas dans le fichier initial.
Merci Beaucoup encore pour ton coup de main
cdlt
Meilleur voeux ,
desole ,Normalement le champ 5 et 6 j en aurais plus besoin.
donc je devrais avoir ceci
$ awk -F ";" '{p=FS; s[$2]=$9 "-" s[$2]; t[$2]=$2 p $3 p $4} END {for (n in t){$0=t[n] p s[n]; sub("-$", ""); print}}' file1.txt
Maroua-Marche-Abattoir-D_EXN_085;16;41321;6-4-6
Douggoy-AG_EXN_002;8;7005;5-4-5
Douggoy-D-AG_EXN_002;16;7012;6-6-6
Maroua-Marche-Abattoir_EXN_085;16;16511;6-3
juste que pour cette ligne (Maroua-Marche-Abattoir_EXN_085;16;16511;6-3) je voudrais avoir
Maroua-Marche-Abattoir_EXN_085;16;16511;Maroua_Zokok-MX;3-0-6
le Zero represente la ligne Maroua-Marche-Abattoir-HR_2 qui n'existe pas dans le fichier initial.
Merci Beaucoup encore pour ton coup de main
cdlt
dubcek
Messages postés
18765
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
20 février 2025
5 626
2 janv. 2015 à 13:20
2 janv. 2015 à 13:20
commet trouver celle qui manque
toutes les lignes sont par groupe de 3, avec 123 ou 678 dans le premier champs ?
toutes les lignes sont par groupe de 3, avec 123 ou 678 dans le premier champs ?
GHISLINO
Messages postés
214
Date d'inscription
lundi 25 juillet 2011
Statut
Membre
Dernière intervention
8 décembre 2023
8 avril 2015 à 17:22
8 avril 2015 à 17:22
bonjour Dubcek
merci bcp
cdlt.
merci bcp
cdlt.