Reunir 2 fichiers en un avec un script shell
Résolu/Fermé
A voir également:
- Reunir 2 fichiers en un avec un script shell
- Script vidéo youtube - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Ouvrir un fichier .bin - Guide
- Comment faire un fichier pdf - Guide
5 réponses
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
20 mai 2010 à 11:59
20 mai 2010 à 11:59
Salut,
man join
;-))
man join
$ cat fich1 654143|764|FACTURE NORD|LIVRE| 753282|627|RECEPTION DOUBLE|EXISTANT| 976376|897|ACION DEMANDER|RESERVER| $ cat fich2 654143|834Z7| 753282|D6735| 976376|76H76| $ join -t '|' -j1 1 -o '1.1 1.2 1.3 2.2 1.4' fich1 fich2 654143|764|FACTURE NORD|834Z7|LIVRE 753282|627|RECEPTION DOUBLE|D6735|EXISTANT 976376|897|ACION DEMANDER|76H76|RESERVER $
;-))
merci de ta reactivité.
Mais je pense que c'est encore plus complexe:
je croix que je me suis mal exprimé
- le nombre de ligne des fichiers fich1 et fich2 varie
- il peux y avoir une ligne manquante sur l'une des deux fichiers, les lignes manquantes sur l'un ou l'autre fichier doit etre redirgé dans un fichier rejet fich4
- en fin fich3 resoit le resulte
Mais je pense que c'est encore plus complexe:
je croix que je me suis mal exprimé
- le nombre de ligne des fichiers fich1 et fich2 varie
- il peux y avoir une ligne manquante sur l'une des deux fichiers, les lignes manquantes sur l'un ou l'autre fichier doit etre redirgé dans un fichier rejet fich4
- en fin fich3 resoit le resulte
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
20 mai 2010 à 15:52
20 mai 2010 à 15:52
hello
j'ai rajouté une ligne dans chaque fichier
j'ai rajouté une ligne dans chaque fichier
$ cat a1 654143|764|FACTURE NORD|LIVRE| 753282|627|RECEPTION DOUBLE|EXISTANT| 976376|897|ACION DEMANDER|RESERVER| 00000|897|ACION DEMANDER|RESERVER| $ $ cat a2 654143|834Z7| 753282|D6735| 976376|76H76| 99999|76H76| $ $ awk 'BEGIN{FS=OFS="|"};NF<4 {x[$1]=$2;z[$1]=$0}; NF>4 {if(!x[$1]){print > "a4";next}; $3=$3 OFS x[$1];print;z[$1]=""};END{for(n in z)if(z[n])print z[n] > "a4"}' a2 a1 654143|764|FACTURE NORD|834Z7|LIVRE| 753282|627|RECEPTION DOUBLE|D6735|EXISTANT| 976376|897|ACION DEMANDER|76H76|RESERVER| $ $ cat a4 00000|897|ACION DEMANDER|RESERVER| 99999|76H76| $
merci c'est exactement ce que je cherche.
comme je m y connai pas awk , je veux apporter une modife sur le format du fichier:
cat a1
85884769370|01800|Moussa |sarr|01061982|SAINT LOUIS|17052010|
08235367539|02900|Bassirou |DILLO|13081967|LOUGA|17052010|
98545784521|02000|Babacar |DOUMBIA|31121955|THIES|17052010|
53677448920|03500|Fatou |SILLA|27101965|COTE IVOIRE|17052010|
15566728777|01700|ALI |DIOP|29031975|MALI|17052010|
77992939257|00700|Bintou |NDIAYE|24041973|DAKAR|17052010|
cat 2
85884769370|030|
08235367539|050|
98545784521|051|
53677448920|060|
15566728777|070|
77992939257|071|
- Peut tu me modifier le script pour l'adapter?
- je oudrais recupere dans a4 le resultat qui s'affachie a l'ecran
comme je m y connai pas awk , je veux apporter une modife sur le format du fichier:
cat a1
85884769370|01800|Moussa |sarr|01061982|SAINT LOUIS|17052010|
08235367539|02900|Bassirou |DILLO|13081967|LOUGA|17052010|
98545784521|02000|Babacar |DOUMBIA|31121955|THIES|17052010|
53677448920|03500|Fatou |SILLA|27101965|COTE IVOIRE|17052010|
15566728777|01700|ALI |DIOP|29031975|MALI|17052010|
77992939257|00700|Bintou |NDIAYE|24041973|DAKAR|17052010|
cat 2
85884769370|030|
08235367539|050|
98545784521|051|
53677448920|060|
15566728777|070|
77992939257|071|
- Peut tu me modifier le script pour l'adapter?
- je oudrais recupere dans a4 le resultat qui s'affachie a l'ecran
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
21 mai 2010 à 07:37
21 mai 2010 à 07:37
pour ces 2 lignes, ou faut-il placer le 030 ?
85884769370|01800|Moussa |sarr|01061982|SAINT LOUIS|17052010|
85884769370|030|
pour placer la sortie dans un fichier ajouter: en bout de ligne
awk ... > a3
85884769370|01800|Moussa |sarr|01061982|SAINT LOUIS|17052010|
85884769370|030|
pour placer la sortie dans un fichier ajouter: en bout de ligne
awk ... > a3
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
21 mai 2010 à 11:44
21 mai 2010 à 11:44
$ awk 'BEGIN{FS=OFS="|"};NF<4 {x[$1]=$2;z[$1]=$0}; NF>4 {if(!x[$1]){print > "a4";next}; $2=x[$1] OFS $2;print;z[$1]=""};END{for(n in z)if(z[n])print z[n] > "a4"}' a2 a1 > a3 $ $ cat a3 85884769370|030|01800|Moussa |sarr|01061982|SAINT LOUIS|17052010| 08235367539|050|02900|Bassirou |DILLO|13081967|LOUGA|17052010| 98545784521|051|02000|Babacar |DOUMBIA|31121955|THIES|17052010| 53677448920|060|03500|Fatou |SILLA|27101965|COTE IVOIRE|17052010| 15566728777|070|01700|ALI |DIOP|29031975|MALI|17052010| 77992939257|071|00700|Bintou |NDIAYE|24041973|DAKAR|17052010| $