Pb avec la commande comm
Résolu/Fermé
JsuisNul
Messages postés
122
Date d'inscription
mercredi 13 février 2013
Statut
Membre
Dernière intervention
14 février 2024
-
1 mars 2013 à 16:41
JsuisNul Messages postés 122 Date d'inscription mercredi 13 février 2013 Statut Membre Dernière intervention 14 février 2024 - 4 mars 2013 à 14:14
JsuisNul Messages postés 122 Date d'inscription mercredi 13 février 2013 Statut Membre Dernière intervention 14 février 2024 - 4 mars 2013 à 14:14
A voir également:
- Pb avec la commande comm
- Invite de commande - Guide
- Commande terminal mac - Guide
- Commande chkdsk - Guide
- Commande en attente d'acceptation fnac ✓ - Forum Consommation & Internet
- Supprimer historique commande amazon - Forum Consommation & Internet
5 réponses
dubcek
Messages postés
18719
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
4 mai 2024
5 615
2 mars 2013 à 08:34
2 mars 2013 à 08:34
hello
comm insère une tabulation pour différencier les données qui viennent d'un fichier ou de l'autre
--output-delimiter="" n'est pas accepté
comm insère une tabulation pour différencier les données qui viennent d'un fichier ou de l'autre
--output-delimiter="" n'est pas accepté
JsuisNul
Messages postés
122
Date d'inscription
mercredi 13 février 2013
Statut
Membre
Dernière intervention
14 février 2024
1
4 mars 2013 à 09:57
4 mars 2013 à 09:57
Bonjour,
Merci pour ta réponse. ce qui m'étonne c'est que je l'avais déjà utilisée cette commande sans que ça me le fasse comme ça.
Comment puis-je enlever cet tabulation ?
Merci.
Merci pour ta réponse. ce qui m'étonne c'est que je l'avais déjà utilisée cette commande sans que ça me le fasse comme ça.
Comment puis-je enlever cet tabulation ?
Merci.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 408
4 mars 2013 à 10:05
4 mars 2013 à 10:05
Salut,
Le problème ce n'est pas d'enlever la tabulation, mais de savoir ce que tu veux exactement ?
Il serait bien de savoir ce que contiennent tes fichiers de départ et ce que tu veux en sortie !
Si la sortie de la commande "comm" ne te convient pas, c'est peut être que ce n'est pas la commande appropriée à ton traitement ;-\
Le problème ce n'est pas d'enlever la tabulation, mais de savoir ce que tu veux exactement ?
Il serait bien de savoir ce que contiennent tes fichiers de départ et ce que tu veux en sortie !
Si la sortie de la commande "comm" ne te convient pas, c'est peut être que ce n'est pas la commande appropriée à ton traitement ;-\
JsuisNul
Messages postés
122
Date d'inscription
mercredi 13 février 2013
Statut
Membre
Dernière intervention
14 février 2024
1
4 mars 2013 à 10:20
4 mars 2013 à 10:20
Bonjour Zipe31,
Je sais ce que je veux faire et comme je l'ai précisé au début, j'essaye d'adapter un vieux script qui fonctionne très bien et qui faisait exactement ce que je souhaitais à l'époque et ce que j'aimerai faire maintenant.
Le but de ce script étant de comparer un fichier extrait du jour à celui extrait de la veille. le fichier est un fichier plat de longueur fixe et des séparateurs de champs ";" . je cherche donc à identifier les lignes modifiées ou ajoutée ou retirée. Pour cela la mécanique générale de mon script est apparemment bonne.
Ce que je constate c'est qu'il ne réagit pas de la même façon et que je dois adapter certaine commande.
Ce que je souhaite donc c'est qu'il n'y est pas cette tabulation car je dois comparer les lignes entre elles de ce même fichier.
Je sais ce que je veux faire et comme je l'ai précisé au début, j'essaye d'adapter un vieux script qui fonctionne très bien et qui faisait exactement ce que je souhaitais à l'époque et ce que j'aimerai faire maintenant.
Le but de ce script étant de comparer un fichier extrait du jour à celui extrait de la veille. le fichier est un fichier plat de longueur fixe et des séparateurs de champs ";" . je cherche donc à identifier les lignes modifiées ou ajoutée ou retirée. Pour cela la mécanique générale de mon script est apparemment bonne.
Ce que je constate c'est qu'il ne réagit pas de la même façon et que je dois adapter certaine commande.
Ce que je souhaite donc c'est qu'il n'y est pas cette tabulation car je dois comparer les lignes entre elles de ce même fichier.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 408
4 mars 2013 à 10:35
4 mars 2013 à 10:35
j'essaye d'adapter un vieux script qui fonctionne très bien et qui faisait exactement ce que je souhaitais à l'époque
D'où mon interrogation concernant la commande "comm" qui n'est peut être pas la plus appropriée ;-\
je cherche donc à identifier les lignes modifiées ou ajoutée ou retirée. Pour cela la mécanique générale de mon script est apparemment bonne.
Celle de l'ancien script ou avec la commande "comm" ?
Ce que je constate c'est qu'il ne réagit pas de la même façon et que je dois adapter certaine commande.
Si on pouvait avoir un exemple concret (un bout des 2 fichiers à comparer et la sortie que tu attends), peut être serions-nous plus à même de t'aider ;-\
D'où mon interrogation concernant la commande "comm" qui n'est peut être pas la plus appropriée ;-\
je cherche donc à identifier les lignes modifiées ou ajoutée ou retirée. Pour cela la mécanique générale de mon script est apparemment bonne.
Celle de l'ancien script ou avec la commande "comm" ?
Ce que je constate c'est qu'il ne réagit pas de la même façon et que je dois adapter certaine commande.
Si on pouvait avoir un exemple concret (un bout des 2 fichiers à comparer et la sortie que tu attends), peut être serions-nous plus à même de t'aider ;-\
JsuisNul
Messages postés
122
Date d'inscription
mercredi 13 février 2013
Statut
Membre
Dernière intervention
14 février 2024
1
4 mars 2013 à 10:54
4 mars 2013 à 10:54
1- A priori la commande comm est approprié puisque le script à fonctionné comme souhaité
2- la mécanique générale de mon script a été faite en utilisant que la commande "comm" avec laquelle j'ai obtenu les résultats souhaités.
3- le première exemple c'est cette tabulation que je ne n'avais pas avant par exemple.
c'est également la commande suivante ( la partie en gras) qui ne fonctionne pas aujourd'hui :
uniq -u --check-chars=7 que j'ai du modifier comme suit uniq -u -f 1
exemple de fichier :
fichier 1 (la veille)
mec1;pepito;rue;CDD
mec2;toto;avenue;CDI
mec3;jean;rue;CDD
mec4;dupont;boulevard;CDD
fichier 2 (du jour)
mec1;pepito;rue;CDI
mec2;toto;avenue;CDI
mec4;dupont;boulevard;CDD
mec5;pierre;rue;CDI
Résultat du script :
mec1;pepito;rue;CDI => car modifié
mec3;jean;rue;CDD => car sorti
mec5;pierre;rue;CDI => car arrivé
2- la mécanique générale de mon script a été faite en utilisant que la commande "comm" avec laquelle j'ai obtenu les résultats souhaités.
3- le première exemple c'est cette tabulation que je ne n'avais pas avant par exemple.
c'est également la commande suivante ( la partie en gras) qui ne fonctionne pas aujourd'hui :
uniq -u --check-chars=7 que j'ai du modifier comme suit uniq -u -f 1
exemple de fichier :
fichier 1 (la veille)
mec1;pepito;rue;CDD
mec2;toto;avenue;CDI
mec3;jean;rue;CDD
mec4;dupont;boulevard;CDD
fichier 2 (du jour)
mec1;pepito;rue;CDI
mec2;toto;avenue;CDI
mec4;dupont;boulevard;CDD
mec5;pierre;rue;CDI
Résultat du script :
mec1;pepito;rue;CDI => car modifié
mec3;jean;rue;CDD => car sorti
mec5;pierre;rue;CDI => car arrivé
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 408
4 mars 2013 à 11:32
4 mars 2013 à 11:32
Merci.
Par contre comment arrives-tu à ce résultat (avec ou sans tabulations) ?
Parce que j'ai beau essayé toutes les combinaisons possibles avec la commande "comm", je n'obtiens jamais ces trois résultats là ;-\
Par contre comment arrives-tu à ce résultat (avec ou sans tabulations) ?
Parce que j'ai beau essayé toutes les combinaisons possibles avec la commande "comm", je n'obtiens jamais ces trois résultats là ;-\
JsuisNul
Messages postés
122
Date d'inscription
mercredi 13 février 2013
Statut
Membre
Dernière intervention
14 février 2024
1
4 mars 2013 à 11:48
4 mars 2013 à 11:48
En faite, mon script ne se résume pas juste au comm car il y a toute une mécanique derrière qui me permet d'arrivée à ce résultat.
Le comm je l'utilise deux fois puis après c'est de la manipulation de fichiers.
Dans la parti qui pose problème pour l'instant, mon but est d'isoler les vrai lignes uniques dans chacun des deux fichiers de départ (ligne qui n'apparait que dans seulement l'un ou l'autre des fichiers ).
Le soucis est qu'une ligne modifié sera considérée comme unique dans chacun des fichiers. Pour ce faire après mon comm, j'utilise la commande uniq sur le premier champs car je sais que c'est un identifiant unique.
Si dans le fichier que j'essaye de construire on a deux fois ce même identifiant je sais alors que c'est une modification donc je n'en veux pas car ce cas là je le traite ailleurs.
C'est pour cela qu'il est important que mon fichier ne soit pas fait avec des tabulation en début de ligne mais que toutes mes lignes début au même endroit.
en espérant avoir été suffisamment clair...
Le comm je l'utilise deux fois puis après c'est de la manipulation de fichiers.
Dans la parti qui pose problème pour l'instant, mon but est d'isoler les vrai lignes uniques dans chacun des deux fichiers de départ (ligne qui n'apparait que dans seulement l'un ou l'autre des fichiers ).
Le soucis est qu'une ligne modifié sera considérée comme unique dans chacun des fichiers. Pour ce faire après mon comm, j'utilise la commande uniq sur le premier champs car je sais que c'est un identifiant unique.
Si dans le fichier que j'essaye de construire on a deux fois ce même identifiant je sais alors que c'est une modification donc je n'en veux pas car ce cas là je le traite ailleurs.
C'est pour cela qu'il est important que mon fichier ne soit pas fait avec des tabulation en début de ligne mais que toutes mes lignes début au même endroit.
en espérant avoir été suffisamment clair...
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 408
4 mars 2013 à 11:58
4 mars 2013 à 11:58
Pour la suppression des tabulations (en exemple les 2 fichiers donnés plus haut) :
Mais bon on obtient le même résultat avec :
$ comm -3 f1 f2 mec1;pepito;rue;CDD mec1;pepito;rue;CDI mec3;jean;rue;CDD mec5;pierre;rue;CDI $ comm -3 f1 f2 | tr -d '\t' mec1;pepito;rue;CDD mec1;pepito;rue;CDI mec3;jean;rue;CDD mec5;pierre;rue;CDI
Mais bon on obtient le même résultat avec :
$ sort f1 f2 | uniq -u mec1;pepito;rue;CDD mec1;pepito;rue;CDI mec3;jean;rue;CDD mec5;pierre;rue;CDI
dubcek
Messages postés
18719
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
4 mai 2024
5 615
4 mars 2013 à 10:46
4 mars 2013 à 10:46
Comment puis-je enlever cet tabulation ?
avec sed comme tu le fais ou
avec sed comme tu le fais ou
tr -d '\t'
JsuisNul
Messages postés
122
Date d'inscription
mercredi 13 février 2013
Statut
Membre
Dernière intervention
14 février 2024
1
4 mars 2013 à 11:17
4 mars 2013 à 11:17
Excuse moi, je le mets à la place de ce qui est déjà en argument du sed avec mon comm ??
comm -3 $SIGACS/file/fich1_REF_Sorted.P $SIGACS/file/fich2_Sorted.P |sed 's/^[ \t]*//'|sort -k 1 > $FICTemp4
comme ça
comm -3 $SIGACS/file/fich1_REF_Sorted.P $SIGACS/file/fich2_Sorted.P |sed tr -d '\t' |sort -k 1 > $FICTemp4
comm -3 $SIGACS/file/fich1_REF_Sorted.P $SIGACS/file/fich2_Sorted.P |sed 's/^[ \t]*//'|sort -k 1 > $FICTemp4
comme ça
comm -3 $SIGACS/file/fich1_REF_Sorted.P $SIGACS/file/fich2_Sorted.P |sed tr -d '\t' |sort -k 1 > $FICTemp4
dubcek
Messages postés
18719
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
4 mai 2024
5 615
Modifié par dubcek le 4/03/2013 à 11:56
Modifié par dubcek le 4/03/2013 à 11:56
non, c'est autre commande, mais le sed va très bien
le sed ne traite que les tabs en début de ligne, tr va tous les supprimer
comm -3 $SIGACS/file/fich1_REF_Sorted.P $SIGACS/file/fich2_Sorted.P |sed 's/^[ \t]*//'|sort -k 1 > $FICTemp4 ou comm -3 $SIGACS/file/fich1_REF_Sorted.P $SIGACS/file/fich2_Sorted.P | tr -d '\t' |sort -k 1 > $FICTemp4
le sed ne traite que les tabs en début de ligne, tr va tous les supprimer
JsuisNul
Messages postés
122
Date d'inscription
mercredi 13 février 2013
Statut
Membre
Dernière intervention
14 février 2024
1
4 mars 2013 à 11:52
4 mars 2013 à 11:52
Ok.
je vais le tester car à priori la premier méthode ne marche pas ici ou je suis.
Merci ;-)
je vais le tester car à priori la premier méthode ne marche pas ici ou je suis.
Merci ;-)
JsuisNul
Messages postés
122
Date d'inscription
mercredi 13 février 2013
Statut
Membre
Dernière intervention
14 février 2024
1
4 mars 2013 à 11:56
4 mars 2013 à 11:56
Test effectué mais toujours le décalage... :-(
merci quand même
merci quand même
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
JsuisNul
Messages postés
122
Date d'inscription
mercredi 13 février 2013
Statut
Membre
Dernière intervention
14 février 2024
1
4 mars 2013 à 14:14
4 mars 2013 à 14:14
MERCI a tous pour vos réponses.
Voila la seul solution qui a fonctionné :
$ sort f1 f2 | uniq -u
De toute façon vu q'il faut que je réhabilite tous mon script vous risquez de me revoir bientôt.. ;-P
Voila la seul solution qui a fonctionné :
$ sort f1 f2 | uniq -u
De toute façon vu q'il faut que je réhabilite tous mon script vous risquez de me revoir bientôt.. ;-P