IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

sed, script bash ou autre pour trier un fichier


Sujet :

Linux

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 219
    Points : 97
    Points
    97
    Par défaut sed, script bash ou autre pour trier un fichier
    Bonjour,

    Je souhaite analyser sous R des données qui sont contenues dans un fichier de 71230 lignes. Je viens de me rendre compte que R ne peut pas ouvrir le fichier en entier.
    Chaque ligne est constitué de l'un des 4 statuts : Unknow, Somatic, Germline et LOH. Je ne suis intéressée que par les lignes Somatic (16007) et LOH (9101). J'ai donc juste besoin de 25108 lignes, ce que je pourrai ouvrir avec R.

    Le problème est que mon fichier n'étant pas trié, je n'obtiens pour le moment que 14613 de mes 16007 lignes Somatic et j'ai le même problème pour LOH.

    Je voudrais donc trier mon fichier par ordre décroissant sur une certaine colonne ou bien supprimer les lignes contenant les statuts qui ne m'intéressent pas.

    J'ai regardé du côté de sed, mais j'ai l'impression que ce n'est pas possible. Existe-t-il un moyen simple pour faire ceci ?

    Merci d'avance,
    Jane

  2. #2
    Membre averti Avatar de fransoo
    Inscrit en
    Novembre 2009
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 209
    Points : 300
    Points
    300
    Par défaut
    Sans avoir à trier, grep, sed ou awk peuvent faire l'affaire. Ils sont à utiliser en fonction de la sortie escomptée.
    Pour un eréponse plus précise, il serait opportun de fournir un échantillon du fichier d'entrée (ou le fichier en entier) et un échantillon de la sortie escomptée.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 219
    Points : 97
    Points
    97
    Par défaut
    Voici le début du fichier qui m'intéresse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    chrom	position	ref	var	normal_reads1	normal_reads2	normal_var_freq	normal_gt	tumor_reads1	tumor_reads2	tumor_var_freq	tumor_gt	somatic_status	variant_p_value	somatic_p_value	tumor_reads1_plus	tumor_reads1_minus	tumor_reads2_plus	tumor_reads2_minus
    chr1	14464	A	T	20	0	0%	A	7	3	30%	W	Somatic	1.0	0.029556650246305542	0	7	1	2
    chr1	14930	A	G	1	48	97,96%	G	146	54	27%	A	Unknown	1.0	1.843344701565351E-21	108	38	36	18
    chr1	15820	G	T	27	0	0%	G	9	4	30,77%	K	Somatic	1.0	0.007823613086771071	1	8	3	1
    chr1	129285	G	A	0	9	100%	A	53	14	20,9%	G	Unknown	1.0	5.736008051269414E-6	0	53	0	14
    chr1	717474	C	T	66	0	0%	C	57	31	35,23%	Y	Somatic	1.0	1.7991929552865899E-9	1	56	1	30
    chr1	741397	A	G	14	0	0%	A	7	5	41,67%	R	Somatic	1.0	0.012040133779264151	0	7	1	4
    chr1	753269	C	G	0	53	100%	G	0	96	100%	G	Germline	4.252004377960163E-89	1.0	0	0	65	31
    chr1	753405	C	A	0	22	100%	A	30	24	44,44%	M	Germline	1.0	1.0858172276183268E-6	1	29	1	23
    chr1	753425	T	C	0	11	100%	C	26	9	25,71%	T	Unknown	1.0	1.2589965486461126E-5	0	26	0	9
    chr1	808631	G	A	0	16	100%	A	11	9	45%	R	Germline	3.935963849997188E-11	2.7955812160483743E-4	10	1	8	1
    chr1	808922	G	A	0	72	100%	A	0	69	100%	A	Germline	2.7108827088360404E-84	1.0	0	0	52	17
    chr1	808928	C	T	0	60	100%	T	103	33	24,26%	C	Unknown	1.0	9.59523507266666E-27	77	26	27	6
    chr1	881734	T	C	62	0	0%	T	36	32	47,06%	Y	Somatic	1.0	9.71847361183559E-12	26	10	20	12
    chr1	887537	C	T	31	0	0%	C	12	9	42,86%	Y	Somatic	1.0	7.989235556303396E-5	3	9	2	7
    chr1	887801	A	G	0	6	100%	G	0	11	100%	G	Germline	4.2852131239177147E-10	1.0	0	0	7	4
    chr1	888639	T	C	0	9	100%	C	0	8	100%	C	Germline	4.2852131239177147E-10	1.0	0	0	0	8
    chr1	888659	T	C	0	17	100%	C	0	18	100%	C	Germline	8.913746132430519E-21	1.0	0	0	2	16
    chr1	896950	C	A	56	0	0%	C	25	30	54,55%	M	Somatic	1.0	2.6915791163877037E-12	8	17	11	19
    chr1	897325	G	C	0	30	100%	C	53	12	18,46%	G	Unknown	1.0	2.3419201755927007E-15	22	31	4	8
    chr1	909238	G	C	0	8	100%	C	0	5	100%	C	Germline	9.614829913658729E-8	1.0	0	0	5	0
    chr1	909768	A	G	0	14	100%	G	0	10	100%	G	Germline	3.101005612159882E-14	1.0	0	0	2	8
    chr1	948921	T	C	0	31	100%	C	46	11	19,3%	T	Unknown	1.0	7.690645926488384E-15	32	14	6	5
    chr1	949654	A	G	0	55	100%	G	40	38	48,72%	R	Germline	1.0	1.6840233488752786E-12	19	21	16	22
    chr1	949925	C	T	0	9	100%	T	2	6	75%	T	Germline	7.327714441899113E-8	0.2058823529411759	0	2	0	6
    chr1	981087	A	G	0	48	100%	G	28	31	52,54%	R	Germline	1.0	1.2301692287976423E-9	22	6	24	7
    chr1	982844	G	C	0	9	100%	C	68	0	0%	G	Unknown	1.0	6.198761061406022E-12	33	35	0	0
    chr1	982941	T	C	0	10	100%	C	37	5	11,9%	T	Unknown	1.0	1.8982271823600982E-7	26	11	4	1
    chr1	982994	T	C	0	6	100%	C	38	4	9,52%	T	Unknown	1.0	1.7112805659155856E-5	19	19	1	3
    chr1	987200	C	T	0	34	100%	T	19	19	50%	Y	Germline	1.0	3.0016097649396463E-7	10	9	2	17
    chr1	1158631	A	G	0	53	100%	G	26	18	40,91%	R	Germline	1.0	3.67095725066703E-12	20	6	16	2
    chr1	1163804	C	T	6	4	40%	Y	8	9	52,94%	Y	Germline	1.8100282040500075E-5	0.40183066361555997	8	0	9	0
    chr1	1163964	G	A	58	45	43,69%	R	121	0	0%	G	LOH	1.0	8.400827858047971E-19	88	33	0	0
    chr1	1178245	C	T	12	14	53,85%	Y	8	9	52,94%	Y	Germline	2.0321587342187875E-9	0.6447996728408544	7	1	8	1
    chr1	1222958	C	T	23	33	58,93%	Y	68	0	0%	C	LOH	1.0	2.468798513345102E-15	16	52	0	0
    Seules les lignes où la colonne somatic-status est Somatic ou LOH m'intéressent. Je voudrais donc le fichier suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    chrom	position	ref	var	normal_reads1	normal_reads2	normal_var_freq	normal_gt	tumor_reads1	tumor_reads2	tumor_var_freq	tumor_gt	somatic_status	variant_p_value	somatic_p_value	tumor_reads1_plus	tumor_reads1_minus	tumor_reads2_plus	tumor_reads2_minus
    chr1	14464	A	T	20	0	0%	A	7	3	30%	W	Somatic	1.0	0.029556650246305542	0	7	1	2
    chr1	15820	G	T	27	0	0%	G	9	4	30,77%	K	Somatic	1.0	0.007823613086771071	1	8	3	1
    chr1	717474	C	T	66	0	0%	C	57	31	35,23%	Y	Somatic	1.0	1.7991929552865899E-9	1	56	1	30
    chr1	741397	A	G	14	0	0%	A	7	5	41,67%	R	Somatic	1.0	0.012040133779264151	0	7	1	4
    chr1	881734	T	C	62	0	0%	T	36	32	47,06%	Y	Somatic	1.0	9.71847361183559E-12	26	10	20	12
    chr1	887537	C	T	31	0	0%	C	12	9	42,86%	Y	Somatic	1.0	7.989235556303396E-5	3	9	2	7
    chr1	896950	C	A	56	0	0%	C	25	30	54,55%	M	Somatic	1.0	2.6915791163877037E-12	8	17	11	19
    chr1	1163964	G	A	58	45	43,69%	R	121	0	0%	G	LOH	1.0	8.400827858047971E-19	88	33	0	0
    chr1	1222958	C	T	23	33	58,93%	Y	68	0	0%	C	LOH	1.0	2.468798513345102E-15	16	52	0	0
    J'imagine que c'est facilement faisable quand on maîtrise le langage shell, ce qui n'est pas mon cas. D'habitude, je peux ouvrir mes fichiers dans R et sélectionner ce que je veux...

  4. #4
    Membre averti Avatar de fransoo
    Inscrit en
    Novembre 2009
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 209
    Points : 300
    Points
    300
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk '{ if ($13 == "LOH" || $13 == "Somatic") { print} }' MonFichier
    Devrait convenir.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 219
    Points : 97
    Points
    97
    Par défaut
    Effectivement, c'est ce qui me fallait
    Bon, en ouvrant et modifiant mon fichier avec Libre Office Calc et Gedit, j'ai bien l'impression d'avoir perdu tout ce qui n'a pas pu être affiché... Il faut que je regénère mon fichier
    Je vérifierai si une fois mon fichier complet retrouvé, j'ai bien tout ce qu'il me faut !

  6. #6
    Membre averti Avatar de fransoo
    Inscrit en
    Novembre 2009
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 209
    Points : 300
    Points
    300
    Par défaut
    En fait, cette commande affiche sur le terminal et fonctionne avec GNU awk, mais dans tous les cas elle ne modifie pas le fichier original.
    Pour écrire dans un fichier, il faut utiliser la redirection :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk '{ if ($13 == "LOH" || $13 == "Somatic") { print} }' MonFichier > NouveauFichier

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 219
    Points : 97
    Points
    97
    Par défaut
    Oui, oui, ça, ça va. J'ai bien redirigé la sortie et c'est dans le nouveau fichier que j'ai vu qu'il me manquait des infos.
    Je pense les avoir perdues en triant mon fichier dans Libre Office Calc avant et en enregistrant les modifs...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [KSH] Script pour trier des fichier dans des répertoires par mois
    Par MsieurDams dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 08/08/2014, 15h32
  2. Problème pour trier les fichiers d'un dossier par date
    Par Stephane_br dans le forum VB.NET
    Réponses: 7
    Dernier message: 24/07/2012, 17h34
  3. Cherche code pour trier un fichier d'adresses par région
    Par Didier100 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 10/01/2009, 08h31
  4. Script awk ou ksh pour découper un fichier xml
    Par Griffith dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 15/05/2007, 23h58
  5. Script bash : Pb avec sed
    Par fred64 dans le forum Linux
    Réponses: 3
    Dernier message: 19/08/2005, 12h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo