A voir également:
- [Scripting bash] Comparaison de fichiers/Recherche de matricule
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Explorateur de fichiers - Guide
- Impossible de supprimer un fichier - Guide
- Wetransfer gratuit fichiers lourd - Guide
- Renommer plusieurs fichiers en même temps - Guide
7 réponses
dubcek
Messages postés
18765
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
20 février 2025
5 624
22 oct. 2017 à 12:24
22 oct. 2017 à 12:24
hello
essayer
j'ai changé la ligne 1 de base.bdd
"REF;"MODIF";"15000001";78600001";" ";" "
par
"REF";"MODIF";"15000001";78600001";" ";" "
essayer
$ awk -F ';|";|[|]' '/REF/ {t[substr($4, 4)+0]=1} /^10|^40/ && t[$3] {print $1 "|" $2 "|" $3}' base.bdd exploit
10|249|128
40|249|128
40|249|128
j'ai changé la ligne 1 de base.bdd
"REF;"MODIF";"15000001";78600001";" ";" "
par
"REF";"MODIF";"15000001";78600001";" ";" "
Merci dub pour ta réponse,
Je n'ai pas compris ton :
""REF;"MODIF";"15000001";78600001";" ";" "
par
"REF";"MODIF";"15000001";78600001";" ";" "
Ce sont les deux memes lignes non ?
Je n'ai pas compris ton :
""REF;"MODIF";"15000001";78600001";" ";" "
par
"REF";"MODIF";"15000001";78600001";" ";" "
Ce sont les deux memes lignes non ?
Dub,
Pour info, qd je lance ta commande, seule une ligne apparait :
100|50|0
Par contre, qd je teste cet autre awk
toutes les lignes 40 apparaissent + 2 lignes commencant par 100...
Pour rappel, le resultat attendu : ce sont les lignes 10 et 40
je m'y remets...!:)
Pour info, qd je lance ta commande, seule une ligne apparait :
100|50|0
Par contre, qd je teste cet autre awk
awk -F'";"' 'NR==FNR{a[substr($4,6)]}NR!=FNR&&!b{FS="|";b=1;$0=$0}NR!=FNR&&/10|40/{if($3 in a)print}' base.bdd exploit
toutes les lignes 40 apparaissent + 2 lignes commencant par 100...
Pour rappel, le resultat attendu : ce sont les lignes 10 et 40
je m'y remets...!:)
dubcek
Messages postés
18765
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
20 février 2025
5 624
Modifié le 23 oct. 2017 à 11:06
Modifié le 23 oct. 2017 à 11:06
montrer les bonnes données
j'ai ajouté un "
"REF";"MODIF";"15000001";78600001";" ";" "
----^
j'ai ajouté un "
"REF";"MODIF";"15000001";78600001";" ";" "
----^
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Fichier Exploit :
30|753|4194|01|13022017|PT||17240|
30|753|4199|01|04032016|DG||04000|
30|753|6001|01|04052013|EP||09090|
30|753|6002|01|01122015|IR||14230|
40|753|7000|BALASK|DOMINIQUE|22111957|L|40|04012018|31122400|
20|753|7000|04012018|39,00|
30|753|7000|03|04012018|GA|11|40|
40|753|7000|04012018|34012018|
41|753|7000|216|02012018|M|34012018|S||||P||04012018|D||
42|753|7000|216|02012018|7,48|
42|753|7000|216|03012018|7,48|
42|753|7000|216|26012018|7,48|
42|753|7000|216|29012018|7,48|
42|753|7000|216|30012018|7,48|
42|753|7000|216|34012018|7,48|
40|753|7001|LANTI|STEPHANE|29121956|R|40|04012018|31122400|
20|753|7001|04012018|0,00|
Fichier base.bdd:
TABL;LISTAB;ETAB1;ETAB2;ETAB3;LIBELLE
"*TA";"principale";"DOSS";" ";" ";"Modif mat"
"REF";"Modif";"15000001";"78600001";" ";" "
"REF";"Modif";"19800531";"78600002";" ";" "
"REF";"Modif";"44800478";"78600003";" ";" "
"REF";"Modif";"44800178";"78600128";" ";" "
Si besoin, j'ai envoyé ce dernier fichier (base.bdd) vers un autre fichier de travail au sein duquel seule ma 4ème colonne apparait de façon triée.
Merci Dub'
30|753|4194|01|13022017|PT||17240|
30|753|4199|01|04032016|DG||04000|
30|753|6001|01|04052013|EP||09090|
30|753|6002|01|01122015|IR||14230|
40|753|7000|BALASK|DOMINIQUE|22111957|L|40|04012018|31122400|
20|753|7000|04012018|39,00|
30|753|7000|03|04012018|GA|11|40|
40|753|7000|04012018|34012018|
41|753|7000|216|02012018|M|34012018|S||||P||04012018|D||
42|753|7000|216|02012018|7,48|
42|753|7000|216|03012018|7,48|
42|753|7000|216|26012018|7,48|
42|753|7000|216|29012018|7,48|
42|753|7000|216|30012018|7,48|
42|753|7000|216|34012018|7,48|
40|753|7001|LANTI|STEPHANE|29121956|R|40|04012018|31122400|
20|753|7001|04012018|0,00|
Fichier base.bdd:
TABL;LISTAB;ETAB1;ETAB2;ETAB3;LIBELLE
"*TA";"principale";"DOSS";" ";" ";"Modif mat"
"REF";"Modif";"15000001";"78600001";" ";" "
"REF";"Modif";"19800531";"78600002";" ";" "
"REF";"Modif";"44800478";"78600003";" ";" "
"REF";"Modif";"44800178";"78600128";" ";" "
Si besoin, j'ai envoyé ce dernier fichier (base.bdd) vers un autre fichier de travail au sein duquel seule ma 4ème colonne apparait de façon triée.
Merci Dub'
dubcek
Messages postés
18765
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
20 février 2025
5 624
Modifié le 23 oct. 2017 à 12:53
Modifié le 23 oct. 2017 à 12:53
dans le fichier exploit, je ne vois aucune ligne 10 ou 40 qui contient un champ 3 égal à la fin du champ 4 de base.bdd (1, 2, 3 ou 128)
si des lignes commencent par 100 ou 400 et on ne veut que celles qui commencent par 10 ou 40, dans mon code, changer /^10|^40/ par /^10[|]|^40[|]/
si des lignes commencent par 100 ou 400 et on ne veut que celles qui commencent par 10 ou 40, dans mon code, changer /^10|^40/ par /^10[|]|^40[|]/
En fait, comme le fichier exploit depasse les 2000 lignes, j'ai copié un extrait sur lequel effectivement il n'y avait pas de correspondance.
Je remets les deux extraits de fichiers avec une correspondance (128) (cf en caractère gras)
=> Malgré la modif de ton awk, rien ne ressort Dub :-/
Exploit :
base. bdd :
Je remets les deux extraits de fichiers avec une correspondance (128) (cf en caractère gras)
=> Malgré la modif de ton awk, rien ne ressort Dub :-/
Exploit :
40|753|4194|01|14022017|PT||17240|
40|753|4199|01|04032016|DG||04000|
40|753|6001|01|04052013|EP||09090|
40|753|6002|01|01122015|IR||14240|
10|753|7000|BALASK|DOMINIQUE|22111957|L|40|04012018|31122400|
20|753|7000|04012018|39,00|
40|753|7000|03|04012018|GA|11|40|
40|753|7000|04012018|34012018|
41|753|7000|216|02012018|M|34012018|S||||P||04012018|D||
42|753|7000|216|02012018|7,48|
42|753|7000|216|04012018|7,48|
42|753|7000|216|26012018|7,48|
42|753|7000|216|29012018|7,48|
42|753|7000|216|40012018|7,48|
42|753|7000|216|34012018|7,48|
10|753|7001|LANTI|STEPHANE|29121956|R|40|04012018|31122400|
20|753|7001|04012018|0,00|
10|753|128|DURAND|ERIC|01041964|R|10|01012018|31122100|
40|753|95|01|14022017|PT||17400|
40|753|100|01|01052016|RD||07610|
40|753|120|01|01012011|CV||02000|
40|753|7136|01|01122009|RD||08240|
40|753|128|02|01122015|IR||14000|
base. bdd :
TABL;LISTAB;ETAB1;ETAB2;ETAB3;LIBELLE
"*TA";"principale";"DOSS";" ";" ";"Modif mat"
"REF";"Modif";"15000001";"78600001";" ";" "
"REF";"Modif";"19800531";"78600002";" ";" "
"REF";"Modif";"44520478";"78600003";" ";" "
"REF";"Modif";"44890198";"78600100";" ";" "
"REF";"Modif";"44940171";"78607136";" ";" "
"REF";"Modif";"47450174";"78600128";" ";" "
dubcek
Messages postés
18765
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
20 février 2025
5 624
23 oct. 2017 à 13:58
23 oct. 2017 à 13:58
problème de "
base.bdd du post 1
du dernier post
$ awk -F ';|";"|[|]' '/REF/ {t[substr($4, 4)+0]=1} /^10[|]|^40[|]/ && t[$3] {print $1 "|" $2 "|" $3}' base.bdd exploit
10|753|128
40|753|100
40|753|7136
40|753|128
base.bdd du post 1
"REF";"MODIF";"4480078";78600128";" ";" "
du dernier post
"REF";"Modif";"47450174";"78600128";" ";" "
-------------------------^
Super Dubounet, ca marche! trop fort, tu m'enleves une sacrée épine du pied!
Juste une toute derniere explication, peux tu m'indiquer que signifie le ",4)+0]=1" de [substr($4, 4)+0]=1}.
Le premier 4 signifie le 4ème champ de bdd mais je ne comprend pas la suite..
Sur le net, j'ai vu que le deuxième 4 correspondait à "la taille" ???
Merci encore
Juste une toute derniere explication, peux tu m'indiquer que signifie le ",4)+0]=1" de [substr($4, 4)+0]=1}.
Le premier 4 signifie le 4ème champ de bdd mais je ne comprend pas la suite..
Sur le net, j'ai vu que le deuxième 4 correspondait à "la taille" ???
Merci encore
dubcek
Messages postés
18765
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
20 février 2025
5 624
Modifié le 23 oct. 2017 à 14:27
Modifié le 23 oct. 2017 à 14:27
[substr($4, 4)+0 du champ 4, on extrait du 4ème caractère au dernier, 3ème paramètre de substr absent, paramètre qui spécifie la longueur de ce qu'on veut garder
donc de 78600128 on extrait la chaine 00128
+0 convertit la chaine en numérique, donc 00128 devient 128
donc de 78600128 on extrait la chaine 00128
+0 convertit la chaine en numérique, donc 00128 devient 128
helios44
Messages postés
344
Date d'inscription
lundi 28 mars 2005
Statut
Membre
Dernière intervention
24 octobre 2017
17
24 oct. 2017 à 09:59
24 oct. 2017 à 09:59
Très intéressant! ca me rappelle un ancien projet pour lequel j'avais du passer par des fichiers intermédiaires pour ressortir le log d'erreur.
Est ce qu'il est possible d'intégrer facilement dans votre awk, la boucle qui permettrait d'afficher les éléments en erreur (ceux qui n'ont pas d'article 10 et 40 dans votre cas) vers un fichier externe ?
Merci
Est ce qu'il est possible d'intégrer facilement dans votre awk, la boucle qui permettrait d'afficher les éléments en erreur (ceux qui n'ont pas d'article 10 et 40 dans votre cas) vers un fichier externe ?
Merci
dubcek
Messages postés
18765
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
20 février 2025
5 624
24 oct. 2017 à 10:23
24 oct. 2017 à 10:23
tout est possible, montrer un exemple de données et du résultat attendu
helios44
Messages postés
344
Date d'inscription
lundi 28 mars 2005
Statut
Membre
Dernière intervention
24 octobre 2017
17
24 oct. 2017 à 10:29
24 oct. 2017 à 10:29
Je ne l'ai pas sous la main mais dans ce cas précis de ligne 10 et 40, comment feriez vous pour renvoyer vers un fichier log les noms des matricules qui n'auraient pas ces 2 lignes? Je l'adapterais à mes données.
Merci
Merci
dubcek
Messages postés
18765
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
20 février 2025
5 624
Modifié le 24 oct. 2017 à 11:04
Modifié le 24 oct. 2017 à 11:04
en inversant le recherche par !
! /^10[|]|^40[|]/ && t[$3] pas les lignes qui commencent par 10 ou 40
ou
/^10[|]|^40[|]/ && ! t[$3] lignes 10 ou 40 qui ne contiennent pas ...
! /^10[|]|^40[|]/ && t[$3] pas les lignes qui commencent par 10 ou 40
ou
/^10[|]|^40[|]/ && ! t[$3] lignes 10 ou 40 qui ne contiennent pas ...
helios44
Messages postés
344
Date d'inscription
lundi 28 mars 2005
Statut
Membre
Dernière intervention
24 octobre 2017
17
24 oct. 2017 à 11:05
24 oct. 2017 à 11:05
Euh excuse moi mais comment tu intégrès ta boucle du coup à l'interieur ?
helios44
Messages postés
344
Date d'inscription
lundi 28 mars 2005
Statut
Membre
Dernière intervention
24 octobre 2017
17
>
dubcek
Messages postés
18765
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
20 février 2025
Modifié le 24 oct. 2017 à 11:14
Modifié le 24 oct. 2017 à 11:14
*