Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 24/01/2011, à 12:08

O'Doc

[resolu] comparer 2 fichiers texte et garder partie identique (BASH)

Bonjour,

voilà, j'ai 2 fichiers dans 1 dossier et je cherche à ne garder que les lignes communes
ex :

fichier 1 :
1
2
3
5

fichier 2 :

1
5
6


resultat :
1
5

malheureusement je ne trouve que des codes pour supprimé les doublons et non les garder :s (et je suis assez débutant en bash)

pouvez vous me donner un coup de main ? merci d'avance

Dernière modification par O'Doc (Le 24/01/2011, à 17:16)


"Peut importe que l'on crée pour voyager dans l'espace ou pour un champs, l'important est de faire ce qu'il nous plait" Aleksander Leonovich Kemurdzhian
"Vivez comme si vous alliez mourir demain. Apprenez comme si vous alliez vivre éternellement" Gandhi
Ma devise : si tu fais quelque chose, fait le bien ou ne le fait pas

Hors ligne

#2 Le 24/01/2011, à 12:22

Tomzz

Re : [resolu] comparer 2 fichiers texte et garder partie identique (BASH)

Bonjour,
Il y a sans doute mieux, mais je fais comme ça:

perl -ne 'print if ($seen{$_} .= @ARGV) =~ /10$/' fichier1 fichier2 > fichier-resultat

Hors ligne

#3 Le 24/01/2011, à 13:46

credenhill

Re : [resolu] comparer 2 fichiers texte et garder partie identique (BASH)

hello

$ cat a2
1
2
3
5
$ cat a3
1
5
6
$ comm -12 a2 a3
1
5

Hors ligne

#4 Le 24/01/2011, à 16:39

O'Doc

Re : [resolu] comparer 2 fichiers texte et garder partie identique (BASH)

geant cette commande smile merci

je vais encore un peu abuser smile mais comment faire si le nombre de fichier à comparer n'est pas constant (parfois 2 fichiers, parfois 3, etc)


"Peut importe que l'on crée pour voyager dans l'espace ou pour un champs, l'important est de faire ce qu'il nous plait" Aleksander Leonovich Kemurdzhian
"Vivez comme si vous alliez mourir demain. Apprenez comme si vous alliez vivre éternellement" Gandhi
Ma devise : si tu fais quelque chose, fait le bien ou ne le fait pas

Hors ligne

#5 Le 24/01/2011, à 16:44

credenhill

Re : [resolu] comparer 2 fichiers texte et garder partie identique (BASH)

il faut trier les fichiers et afficher les doublons

$ sort a2 a3 | uniq -d
1
5
$ 

Hors ligne

#6 Le 24/01/2011, à 16:53

nordinatueur

Re : [resolu] comparer 2 fichiers texte et garder partie identique (BASH)

« comm » demande que les fichiers soient triés :

$ cat a1
1
2
11
1
2
5
$ cat  a2
1
2
1
5
6
$ comm -12 a1 a2
1
2
comm: fichier 1 n'est pas dans l'ordre attendu
5
$ comm --nocheck-order -12 a1 a2
1
2
5
#Il manque le deuxième « 1 »

Le résultat est encore pire si tu remplaces un des nombres par un mot comme « mouton .»
Tout le reste n'est alors pas lu.

Pour qu'elles restent dans l'ordre, avec une recherche « intelligente », utilise « diff » pour voir la différence entre les fichiers puis applique toutes les suppresions de lignes en interdisant tous les ajouts :

$ edscript=$(diff -e a1 a2 | sed -r ':a;N;$!ba;s/\n/\ /g;s/[0-9]+a[^\.]+\. //g;s/ /\n/g');
sed -e "$edscript" a1
1
2
1
5

Linux User #508094
Pour une meilleure coopération, utilisez des liens relatifs sur le forum !

Hors ligne

#7 Le 24/01/2011, à 17:05

Totor

Re : [resolu] comparer 2 fichiers texte et garder partie identique (BASH)

credenhill a écrit :

il faut trier les fichiers et afficher les doublons

$ sort a2 a3 | uniq -d
1
5
$ 

...sous réserve qu'il n'y ait pas de doublons dans les fichiers initiaux...


-- Lucid Lynx --

Hors ligne

#8 Le 24/01/2011, à 17:15

O'Doc

Re : [resolu] comparer 2 fichiers texte et garder partie identique (BASH)

en fait je pense avoir reussi, en fait j'élimine les doublons (apres avoir fait un sort) dans les fichiers d'origine, puis je charge le contenu de chaque fichier dans un fichier tmp que je trie et sur lequel j'applique uniq -d

donc voila, résolu, encore merci d'avoir pris un peu de temps pour m'aider
bonne journée


"Peut importe que l'on crée pour voyager dans l'espace ou pour un champs, l'important est de faire ce qu'il nous plait" Aleksander Leonovich Kemurdzhian
"Vivez comme si vous alliez mourir demain. Apprenez comme si vous alliez vivre éternellement" Gandhi
Ma devise : si tu fais quelque chose, fait le bien ou ne le fait pas

Hors ligne

#9 Le 24/01/2011, à 19:17

nordinatueur

Re : [resolu] comparer 2 fichiers texte et garder partie identique (BASH)

Si c'est pas trop indiscret, c'est pour en faire quoi ?
Tu n'as pas besoin que les lignes en doubles soient dupliquées à la fin, ou même de conserver l'ordre de tes lignes ?


Linux User #508094
Pour une meilleure coopération, utilisez des liens relatifs sur le forum !

Hors ligne

#10 Le 24/03/2011, à 13:28

O'Doc

Re : [resolu] comparer 2 fichiers texte et garder partie identique (BASH)

je réponds 2 mois après mais bon vaut mieux tard que jamais enfin je crois (j'avais pas vu ton message, vu que le problème était réglé).

En fait, dans le cadre de mon stage de M1 (je suis en biologie moléculaire), j'ai fais différents scripts qui permet de recuperer et trier des infos sur un très grand nombre de gène qui sont potentiellement régulé par un ARN non codant (micro-ARN pour ceux qui connaissent). La partie pour comparer permet de voir si différent micro-ARN exprimé de la même manière suite à un changement de condition de culture cellulaire (ici choc thermique) régulent des mécanismes identiques.

2 mois après le programme est finis et utilisable, il reste à confirmer ces résultats par expérimentation.

Voilà, donc merci pour le coup de main smile (pour info le programme, en licence GNU/GPL V3 est dispo ici http://doc-web.fr/stage/index.html, mais bon le code n'est surement pas optimiser mais sa fonctionne c'est tout se qui est important (et y a pas bcp de commentaire :s). Une fois le rapport de stage et la sooutenance faite, je regarderais pour améliorer tout sa, voir trouver un moyen de le porter sous windows)

Dernière modification par O'Doc (Le 24/03/2011, à 13:29)


"Peut importe que l'on crée pour voyager dans l'espace ou pour un champs, l'important est de faire ce qu'il nous plait" Aleksander Leonovich Kemurdzhian
"Vivez comme si vous alliez mourir demain. Apprenez comme si vous alliez vivre éternellement" Gandhi
Ma devise : si tu fais quelque chose, fait le bien ou ne le fait pas

Hors ligne

#11 Le 24/03/2011, à 13:40

grim7reaper

Re : [resolu] comparer 2 fichiers texte et garder partie identique (BASH)

Un conseil : essaye d'apprendre un langage comme Perl ou Python.
Bon c'est un investissement, mais ces langages ne sont pas trop compliqués et leur apprentissage est vite rentabilisé smile

Ils possèdent des bibliothèques dédiés à la bioinformatique (respectivement BioPerl et Biopython) donc ça facilitera ton travail (surtout si tu veux faire des choses un peu plus complexes), mais surtout ils fonctionnent sur Windows, Linux, MacOS, BSD, etc.
Ça t'éviterais de réecrire ton programme comme tu dois le faire avec Bash wink

Dernière modification par grim7reaper (Le 24/03/2011, à 13:40)

Hors ligne

#12 Le 24/03/2011, à 13:53

O'Doc

Re : [resolu] comparer 2 fichiers texte et garder partie identique (BASH)

oui, je pensais me tourner vers python (je suppose qu'on peut facilement telecharger une page web et la parser avec python), c'est juste que je n'avais que 2 semaine pour analyser les données dont on disposait et bash était le seul langage donc j'avais qq notion qui pouvait convenir (sa aide d'avoir un serveur perso pour connaitre 2-3 commande utile smile ).
Mais pour l'utiliser, actuellement le labo utilise une cle live-usb avec ubuntu vu que tout le monde est sous windows, donc effectivement python me parait être le mieux placé pour faire un prog multiplateforme


"Peut importe que l'on crée pour voyager dans l'espace ou pour un champs, l'important est de faire ce qu'il nous plait" Aleksander Leonovich Kemurdzhian
"Vivez comme si vous alliez mourir demain. Apprenez comme si vous alliez vivre éternellement" Gandhi
Ma devise : si tu fais quelque chose, fait le bien ou ne le fait pas

Hors ligne

#13 Le 24/03/2011, à 14:01

grim7reaper

Re : [resolu] comparer 2 fichiers texte et garder partie identique (BASH)

O'Doc a écrit :

(je suppose qu'on peut facilement telecharger une page web et la parser avec python)

Oui, comme avec pas mal d'autres langage (Perl et Ruby entre autres).
Pour Python regarde du côté de Beautifoul Soup

Hors ligne