Recherche avec AWK + formatage [Résolu/Fermé]
Signaler
GHISLINO
GHISLINO
- Messages postés
- 191
- Date d'inscription
- lundi 25 juillet 2011
- Statut
- Membre
- Dernière intervention
- 12 février 2021
GHISLINO
- Messages postés
- 191
- Date d'inscription
- lundi 25 juillet 2011
- Statut
- Membre
- Dernière intervention
- 12 février 2021
A voir également:
- Recherche avec AWK + formatage
- Recherche avec AWK + formatage ✓ - Forum - Redhat
- Recherche avec AWK + Ajout ✓ - Forum - Redhat
- Recherche driver apres formatage ✓ - Forum - Windows XP
- [Shel Script] Awk formatage fichier texte ✓ - Forum - Shell
- Recherche bon tuto formatage xp ✓ - Forum - Windows
7 réponses
mamiemando
- Messages postés
- 29732
- Date d'inscription
- jeudi 12 mai 2005
- Statut
- Modérateur
- Dernière intervention
- 15 avril 2021
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
- 191
- Date d'inscription
- lundi 25 juillet 2011
- Statut
- Membre
- Dernière intervention
- 12 février 2021
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
- 29732
- Date d'inscription
- jeudi 12 mai 2005
- Statut
- Modérateur
- Dernière intervention
- 15 avril 2021
Et du coup avec les indications que je t'ai données, tu es débloqué ? Meilleurs voeux également :-)
dubcek
- Messages postés
- 18240
- Date d'inscription
- lundi 15 janvier 2007
- Statut
- Contributeur
- Dernière intervention
- 30 novembre 2020
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
GHISLINO
- Messages postés
- 191
- Date d'inscription
- lundi 25 juillet 2011
- Statut
- Membre
- Dernière intervention
- 12 février 2021
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