Construction d'un programme shell
Résolu/Fermé
Benoit A.
Messages postés
454
Date d'inscription
mercredi 8 février 2012
Statut
Membre
Dernière intervention
13 août 2015
-
21 juil. 2014 à 17:34
Benoit A. Messages postés 454 Date d'inscription mercredi 8 février 2012 Statut Membre Dernière intervention 13 août 2015 - 24 juil. 2014 à 11:34
Benoit A. Messages postés 454 Date d'inscription mercredi 8 février 2012 Statut Membre Dernière intervention 13 août 2015 - 24 juil. 2014 à 11:34
A voir également:
- Construction d'un programme shell
- Programme demarrage windows 10 - Guide
- Classic shell windows 10 français - Télécharger - Personnalisation
- Fichier ouvert dans un autre programme - Guide
- Desinstaller un programme - Guide
- Programme démarrage windows 10 - Guide
4 réponses
dubcek
Messages postés
18718
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
22 mars 2024
5 615
23 juil. 2014 à 16:30
23 juil. 2014 à 16:30
je prends les données Avant du post #21
$ awk -F ";" '{t[$1]=$0} END {for (n in t)print t[n]}' fichier
"123558";"10/02/1900";" ";"01/01/1900";"111111111";"00";"0";"AAAAAAAA";"CAD";" ";"55523";"9952122222";"P999";" ";"1";"SXXXX";"00";" ";"35.0";"11122510";"N";"300";
"188888";"01/01/1900";" ";"01/12/9999";"111111111";"00";"0";"AAAAAAAA";"CAD";" ";"55523";"9952122222";"P999";" ";"1";"SXXXX";"00";" ";"35.0";"00125423";"N";"300";
$
dubcek
Messages postés
18718
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
22 mars 2024
5 615
Modifié par dubcek le 22/07/2014 à 10:49
Modifié par dubcek le 22/07/2014 à 10:49
hello
question: dans 1er exemple, on garde la ligne 188888.. du fichier mois, est-ce tjrs le cas, à savoir qu'à ligne différente, on garde celle de mois et pas mois-1 ?
pour le 1 ex.
question: dans 1er exemple, on garde la ligne 188888.. du fichier mois, est-ce tjrs le cas, à savoir qu'à ligne différente, on garde celle de mois et pas mois-1 ?
pour le 1 ex.
$ awk 'ARGIND==1 {t[$0]=$0; next} !t[$0]' mois-1 mois
"188888";"01/01/1900";" ";"01/12/9999";"111111111";"00";"0";"AAAAAAAA";"CAD";" ";"55523";"9952122222";"P999";" ";"1";"SXXXX";"00";" ";"35.0";"00125423";"N";"300";
Benoit A.
Messages postés
454
Date d'inscription
mercredi 8 février 2012
Statut
Membre
Dernière intervention
13 août 2015
515
Modifié par Benoit A. le 22/07/2014 à 12:11
Modifié par Benoit A. le 22/07/2014 à 12:11
Oui c'est ça. Je ne veux garder que les lignes différentes du fichier mois par rapport au fichier mois -1
Benoit A.
Messages postés
454
Date d'inscription
mercredi 8 février 2012
Statut
Membre
Dernière intervention
13 août 2015
515
22 juil. 2014 à 12:25
22 juil. 2014 à 12:25
Le script ne marche malheureusement pas. Il m'empile tous les résultats à la suite...
dubcek
Messages postés
18718
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
22 mars 2024
5 615
Modifié par dubcek le 22/07/2014 à 13:12
Modifié par dubcek le 22/07/2014 à 13:12
quel système ? essayer avec nawk
est-ce un .csv Windows qui contient des ^M ?
est-ce un .csv Windows qui contient des ^M ?
Benoit A.
Messages postés
454
Date d'inscription
mercredi 8 février 2012
Statut
Membre
Dernière intervention
13 août 2015
515
22 juil. 2014 à 14:07
22 juil. 2014 à 14:07
Je le fais directement sur une machine linux. Mais le problème c'est que la commande
$ awk 'ARGIND==1 {t[$0]=$0; next} !t[$0]' mois-1 moisdeux fichiers l'un à la suite de l'autre. Il ne fait pas la comparaison.
dubcek
Messages postés
18718
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
22 mars 2024
5 615
22 juil. 2014 à 14:11
22 juil. 2014 à 14:11
sont-ce des .csv Windows qui contiennent des ^M ?
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 407
21 juil. 2014 à 18:41
21 juil. 2014 à 18:41
Salut,
Pour ton 1er problème un simple
Par contre pour ton 2nd problème, est-ce que le nombre de caractère comprenant l'ensemble des champs 1, 2, 3 et 4 est constant ? (à savoir avec tes exemples, 39 caractères)
Pour ton 1er problème un simple
fgrep -v -f fichier_mois-1 fichier_moisdevrait te renvoyer le résultat escompté ;-)
Par contre pour ton 2nd problème, est-ce que le nombre de caractère comprenant l'ensemble des champs 1, 2, 3 et 4 est constant ? (à savoir avec tes exemples, 39 caractères)
Benoit A.
Messages postés
454
Date d'inscription
mercredi 8 février 2012
Statut
Membre
Dernière intervention
13 août 2015
515
22 juil. 2014 à 12:40
22 juil. 2014 à 12:40
Ca ne marche malheureusement pas non plus :(
Benoit A.
Messages postés
454
Date d'inscription
mercredi 8 février 2012
Statut
Membre
Dernière intervention
13 août 2015
515
22 juil. 2014 à 08:47
22 juil. 2014 à 08:47
Oui le nombre de caractère est exactement le même
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 407
22 juil. 2014 à 09:10
22 juil. 2014 à 09:10
Alors essaie ça :
Mais en attendant un peu, dubcek devrait te concocter une formule magique dont il a le secret avec awk ;-))
fgrep -v -f fichier-1 fichier | sort -r | uniq -s 39 | sort -t';' -k 2mais c'est sans garantie n'ayant pas assez de données pour optimiser la chose ;-\
Mais en attendant un peu, dubcek devrait te concocter une formule magique dont il a le secret avec awk ;-))
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 407
22 juil. 2014 à 13:02
22 juil. 2014 à 13:02
On pourrait avoir un exemple plus conséquent de fichiers (une dizaine de lignes pour chacun + le résultat final) ?
Benoit A.
Messages postés
454
Date d'inscription
mercredi 8 février 2012
Statut
Membre
Dernière intervention
13 août 2015
515
22 juil. 2014 à 13:13
22 juil. 2014 à 13:13
Fichier mois-1
"199999";"01/01/1900";" ";"01/12/9999";"111111111";"00";"0";"AAAAAAAA";"CAD";" ";"55523";"9952122222";"P999";" ";"1";"SXXXX";"00";" ";"35.0";"11122510";"N";"300";
"188888";"01/01/1900";" ";"01/12/9999";"111111111";"00";"0";"AAAAAAAA";"CAD";" ";"55523";"9952122222";"P999";" ";"1";"SXXXX";"00";" ";"35.0";"11122510";"N";"300";
"199851";"01/01/1900";" ";"01/12/9999";"111111111";"00";"0";"AAAAAAAA";"CAD";" ";"55523";"9952122222";"P999";" ";"1";"SXXXX";"00";" ";"35.0";"11122510";"N";"300";
"123558";"01/01/1900";" ";"01/12/9999";"111111111";"00";"0";"AAAAAAAA";"CAD";" ";"55523";"9952122222";"P999";" ";"1";"SXXXX";"00";" ";"35.0";"11122510";"N";"300";
"123558";"01/01/1900";" ";"01/12/9999";"111111111";"00";"0";"AAAAAAAA";"CAD";" ";"55523";"9952122222";"P999";" ";"1";"SXXXX";"00";" ";"35.0";"11122510";"N";"300";
"123558";"01/01/1900";" ";"01/12/9999";"111111111";"00";"0";"AAAAAAAA";"CAD";" ";"55523";"9952122222";"P999";" ";"1";"SXXXX";"00";" ";"35.0";"11122510";"N";"300";
Fichier mois
"199999";"01/01/1900";" ";"01/12/9999";"111111111";"00";"0";"AAAAAAAA";"CAD";" ";"55523";"9952122222";"P999";" ";"1";"SXXXX";"00";" ";"35.0";"11122510";"N";"300";
"188888";"01/01/1900";" ";"01/12/9999";"111111111";"00";"0";"AAAAAAAA";"CAD";" ";"55523";"9952122222";"P999";" ";"1";"SXXXX";"00";" ";"35.0";"00125423";"N";"300";
"199851";"01/01/1900";" ";"01/12/9999";"111111111";"00";"0";"AAAAAAAA";"CAD";" ";"55523";"9952122222";"P999";" ";"1";"SXXXX";"00";" ";"35.0";"11122510";"N";"300";
"123558";"02/02/1900";" ";"01/01/1900";"111111111";"00";"0";"AAAAAAAA";"CAD";" ";"55523";"9952122222";"P999";" ";"1";"SXXXX";"00";" ";"35.0";"11122510";"N";"300";
"123558";"03/02/1900";" ";"01/01/1900";"111111111";"00";"0";"AAAAAAAA";"CAD";" ";"55523";"9952122222";"P999";" ";"1";"SXXXX";"00";" ";"35.0";"11122510";"N";"300";
"123558";"10/02/1900";" ";"01/01/1900";"111111111";"00";"0";"AAAAAAAA";"CAD";" ";"55523";"9952122222";"P999";" ";"1";"SXXXX";"00";" ";"35.0";"11122510";"N";"300";
Résultat attendu après les deux conditions :
Suppressions des lignes identiques par rapport au mois -1 et récupération de la dernière ligne qui à une date en colonne 2 plus ancienne avec les mêmes caractéristiques..
"188888";"01/01/1900";" ";"01/12/9999";"111111111";"00";"0";"AAAAAAAA";"CAD";" ";"55523";"9952122222";"P999";" ";"1";"SXXXX";"00";" ";"35.0";"00125423";"N";"300";
"123558";"10/02/1900";" ";"01/01/1900";"111111111";"00";"0";"AAAAAAAA";"CAD";" ";"55523";"9952122222";"P999";" ";"1";"SXXXX";"00";" ";"35.0";"11122510";"N";"300";
"199999";"01/01/1900";" ";"01/12/9999";"111111111";"00";"0";"AAAAAAAA";"CAD";" ";"55523";"9952122222";"P999";" ";"1";"SXXXX";"00";" ";"35.0";"11122510";"N";"300";
"188888";"01/01/1900";" ";"01/12/9999";"111111111";"00";"0";"AAAAAAAA";"CAD";" ";"55523";"9952122222";"P999";" ";"1";"SXXXX";"00";" ";"35.0";"11122510";"N";"300";
"199851";"01/01/1900";" ";"01/12/9999";"111111111";"00";"0";"AAAAAAAA";"CAD";" ";"55523";"9952122222";"P999";" ";"1";"SXXXX";"00";" ";"35.0";"11122510";"N";"300";
"123558";"01/01/1900";" ";"01/12/9999";"111111111";"00";"0";"AAAAAAAA";"CAD";" ";"55523";"9952122222";"P999";" ";"1";"SXXXX";"00";" ";"35.0";"11122510";"N";"300";
"123558";"01/01/1900";" ";"01/12/9999";"111111111";"00";"0";"AAAAAAAA";"CAD";" ";"55523";"9952122222";"P999";" ";"1";"SXXXX";"00";" ";"35.0";"11122510";"N";"300";
"123558";"01/01/1900";" ";"01/12/9999";"111111111";"00";"0";"AAAAAAAA";"CAD";" ";"55523";"9952122222";"P999";" ";"1";"SXXXX";"00";" ";"35.0";"11122510";"N";"300";
Fichier mois
"199999";"01/01/1900";" ";"01/12/9999";"111111111";"00";"0";"AAAAAAAA";"CAD";" ";"55523";"9952122222";"P999";" ";"1";"SXXXX";"00";" ";"35.0";"11122510";"N";"300";
"188888";"01/01/1900";" ";"01/12/9999";"111111111";"00";"0";"AAAAAAAA";"CAD";" ";"55523";"9952122222";"P999";" ";"1";"SXXXX";"00";" ";"35.0";"00125423";"N";"300";
"199851";"01/01/1900";" ";"01/12/9999";"111111111";"00";"0";"AAAAAAAA";"CAD";" ";"55523";"9952122222";"P999";" ";"1";"SXXXX";"00";" ";"35.0";"11122510";"N";"300";
"123558";"02/02/1900";" ";"01/01/1900";"111111111";"00";"0";"AAAAAAAA";"CAD";" ";"55523";"9952122222";"P999";" ";"1";"SXXXX";"00";" ";"35.0";"11122510";"N";"300";
"123558";"03/02/1900";" ";"01/01/1900";"111111111";"00";"0";"AAAAAAAA";"CAD";" ";"55523";"9952122222";"P999";" ";"1";"SXXXX";"00";" ";"35.0";"11122510";"N";"300";
"123558";"10/02/1900";" ";"01/01/1900";"111111111";"00";"0";"AAAAAAAA";"CAD";" ";"55523";"9952122222";"P999";" ";"1";"SXXXX";"00";" ";"35.0";"11122510";"N";"300";
Résultat attendu après les deux conditions :
Suppressions des lignes identiques par rapport au mois -1 et récupération de la dernière ligne qui à une date en colonne 2 plus ancienne avec les mêmes caractéristiques..
"188888";"01/01/1900";" ";"01/12/9999";"111111111";"00";"0";"AAAAAAAA";"CAD";" ";"55523";"9952122222";"P999";" ";"1";"SXXXX";"00";" ";"35.0";"00125423";"N";"300";
"123558";"10/02/1900";" ";"01/01/1900";"111111111";"00";"0";"AAAAAAAA";"CAD";" ";"55523";"9952122222";"P999";" ";"1";"SXXXX";"00";" ";"35.0";"11122510";"N";"300";
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 407
22 juil. 2014 à 13:20
22 juil. 2014 à 13:20
Ben voilà le réusltat avec ma commande précédente (j'ai juste enlever le dernier sort, car le résultat était le même)
$ fgrep -v -f f-1 f-mois | sort -r | uniq -s 39
"188888";"01/01/1900";" ";"01/12/9999";"111111111";"00";"0";"AAAAAAAA";"CAD";" ";"55523";"9952122222";"P999";" ";"1";"SXXXX";"00";" ";"35.0";"00125423";"N";"300";
"123558";"10/02/1900";" ";"01/01/1900";"111111111";"00";"0";"AAAAAAAA";"CAD";" ";"55523";"9952122222";"P999";" ";"1";"SXXXX";"00";" ";"35.0";"11122510";"N";"300";
Benoit A.
Messages postés
454
Date d'inscription
mercredi 8 février 2012
Statut
Membre
Dernière intervention
13 août 2015
515
22 juil. 2014 à 14:11
22 juil. 2014 à 14:11
Ca ne marche toujours pas pour moi. Le programme ne fait rien du tout .... Il se lance mais rien ne bouge. Je n'ai aucun résultat. Je suis obligé de le stopper avec ctrl+c pour annuler le prog. Sinon j'ai comme l'impression qu'il tourne dans le vide.
Est-ce que cela peut être long ?
Est-ce que cela peut être long ?
24 juil. 2014 à 11:34
Bravo l'artiste !!