Après de nombreuses recherches et essais, je me retourne vers vous.
Je souhaiterai supprimer les ligne de mon fichier qui contiennent le caractère . dans la colonne 3.
Voici à quoi ressemble mon fichier :
1 899634 rs114053887 C T . . BIOMART_COORDS=1:899634:899634 0/1:T=6,C=21:0:27:heterozygous 0/0:C=46:0:46:homozygous
1 900285 rs4970435 C T . . BIOMART_COORDS=1:900285:9002851/1:T=22:0:22:homozygous 1/1:T=3:3:3:homozygous
1 900382 . C . . . BIOMART_COORDS=1:900382:900382;GENE=ENSG00000187961 0/0:C=76:0:76:homozygous 0/0:C=81:0:81:homozygous 0/0:C=63:0:63:homozygous 0/0:C=56:0:56:homozygous 0/0:C=91:0:91:homozygous 1 900286 rs4970434 A G . . BIOMART_COORDS=1:900286:900286 1/1:G=49:0:49:homozygous 0/1:A=7,G=22:0:29:heterozygous 1/1:G=22:0:22:homozygous 1/1:G=3:3:3:homozygous 1/1:G=24:0:24:homozygous
Ainsi, si la ligne contient dans la troisième colonne un rs, on ne touche à rien mais si la ligne contient un . dans la troisième colonne, alors on la supprime pour au final avoir un fichier de la forme :
1 899634 rs114053887 C T . . BIOMART_COORDS=1:899634:899634 0/1:T=6,C=21:0:27:heterozygous 0/0:C=46:0:46:homozygous
1 900285 rs4970435 C T . . BIOMART_COORDS=1:900285:9002851/1:T=22:0:22:homozygous 1/1:T=3:3:3:homozygous
1 900286 rs4970434 A G . . BIOMART_COORDS=1:900286:900286 1/1:G=49:0:49:homozygous 0/1:A=7,G=22:0:29:heterozygous 1/1:G=22:0:22:homozygous 1/1:G=3:3:3:homozygous 1/1:G=24:0:24:homozygous
Donc au final je souhaite supprimer toutes les lignes avec . dans la troisième colonne.
voilà ce que j'ai entre autre essayé ;:
while read line
do
echo -e "$line"
a=$(awk -F \t '$3 ~ /\./' GQPDOMB_verifie.vcf | awk '{print $3}')
if test -n "$a"
then
sed '$a d' GQPDOMB_verifie.vcf
echo "ok "
fi
done < GQPDOMB_verifie.vcf
Merci d'avance
- Edité par Amandine Lecerf Defer 2 mai 2019 à 13:43:01
Amandine, Licence de Biologie, Master de Bioinformatique, en formation de Data Scientist
#!/bin/bash
#sed -i -e 's/\r$//' essai.sh
while read line
do
echo -e "$line"
a=$(grep "\." $3 $line | awk '{print $3}')
if test -n "$a"
then
sed '$line d' GQPDOMB_verifie.vcf
#echo "ok "
fi
done < GQPDOMB_verifie.vcf
Mais ça ne marche pas
- Edité par Amandine Lecerf Defer 2 mai 2019 à 15:49:00
Amandine, Licence de Biologie, Master de Bioinformatique, en formation de Data Scientist
#!/bin/bash
NEW_FILE=/tmp/new_file.txt
>$NEW_FILE
while read line
do
THIRDF=$(echo $line |awk '{print $3}')
if [[ $THIRDF != "." ]]
then
echo "$line" >> $NEW_FILE
fi
done < GQPDOMB_verifie.vcf
Malheureusement, aucune des deux commandes ne marche
ox223252 a écrit:
essais cette ligne là :
sed -i -r '/^[0-9]+\s+[0-9]+\s+\./d' file
oucelle-ci :
sed -i -r '/^([0-9]+\s+){2}\./d' file
- Edité par ox223252 il y a 28 minutes
Malheureusement cela ne marche pas non plus car il ne prends en compte que l'en tête de mon fichier qui ne me sert pas
Olivier1236 a écrit:
Bonjour
Vite fais:
#!/bin/bash
NEW_FILE=/tmp/new_file.txt
>$NEW_FILE
while read line
do
THIRDF=$(echo $line |awk '{print $3}')
if [[ $THIRDF != "." ]]
then
echo "$line" >> $NEW_FILE
fi
done < GQPDOMB_verifie.vcf
Olivier
- Edité par Olivier1236 il y a 31 minutes
EDIT :
avec les ligne suivantes, j'ai réussi à récupérer les ligne qui correspondent à ma condition mais je n'arrive pas à les supprimer par la suite :
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
suppression de ligne dans un fichieren fontion
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Amandine, Licence de Biologie, Master de Bioinformatique, en formation de Data Scientist
la connaissance est une chose qui ne nous appauvrit pas quand on la partage.
Mon GitHub
Amandine, Licence de Biologie, Master de Bioinformatique, en formation de Data Scientist
la connaissance est une chose qui ne nous appauvrit pas quand on la partage.
Mon GitHub
Amandine, Licence de Biologie, Master de Bioinformatique, en formation de Data Scientist
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique