как удалить строки на основе числа - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть такие данные

>sp|Q96A73|P33MX_HUMAN Putative monooxygenase p33MONOX OS=Homo sapiens OX=9606 GN=KIAA1191 PE=1 SV=1
305
>sp|P13674|P4HA1_HUMAN Prolyl 4-hydroxylase subunit alpha-1 OS=Homo sapiens OX=9606 GN=P4HA1 PE=1 SV=2
534
>sp|Q7Z4N8|P4HA3_HUMAN Prolyl 4-hydroxylase subunit alpha-3 OS=Homo sapiens OX=9606 GN=P4HA3 PE=1 SV=1
544
>sp|P04637|P53_HUMAN Cellular tumor antigen p53 OS=Homo sapiens OX=9606 GN=TP53 PE=1 SV=4
393
>sp|Q9UHX1|PUF60_HUMAN Poly(U)-binding-splicing factor PUF60 OS=Homo sapiens OX=9606 GN=PUF60 PE=1 SV=1
559
>sp|Q06416|P5F1B_HUMAN Putative POU domain, class 5, transcription factor 1B OS=Homo sapiens OX=9606 GN=POU5F1B PE=5 SV=2
359
>sp|O14683|P5I11_HUMAN Tumor protein p53-inducible protein 11 OS=Homo sapiens OX=9606 GN=TP53I11 PE=1 SV=2
189
>sp|Q14671|PUM1_HUMAN Pumilio homolog 1 OS=Homo sapiens OX=9606 GN=PUM1 PE=1 SV=3
1186

каждая строка имеет номер под ними, я хочу идентифицировать те, которые имеют номер меньше 350, и удалить строки из него

Я хочу прийти к такому выводу

P13674 534
Q7Z4N8 544
P04637 393
Q9UHX1 559
Q06416 359
Q14671 1186

Я могу попытаться взять строки между ||но я не могу удалить

awk -F '[| ]' '/^>/ { print $3}' < data.txt

Ответы [ 3 ]

0 голосов
/ 12 февраля 2019

Еще один awk с помощью команды вставки

paste - - < learner.txt  | awk -F"[|\t]" ' $NF>350 { print $2,$NF } '

с заданными входами

$ cat learner.txt
>sp|Q96A73|P33MX_HUMAN Putative monooxygenase p33MONOX OS=Homo sapiens OX=9606 GN=KIAA1191 PE=1 SV=1
305
>sp|P13674|P4HA1_HUMAN Prolyl 4-hydroxylase subunit alpha-1 OS=Homo sapiens OX=9606 GN=P4HA1 PE=1 SV=2
534
>sp|Q7Z4N8|P4HA3_HUMAN Prolyl 4-hydroxylase subunit alpha-3 OS=Homo sapiens OX=9606 GN=P4HA3 PE=1 SV=1
544
>sp|P04637|P53_HUMAN Cellular tumor antigen p53 OS=Homo sapiens OX=9606 GN=TP53 PE=1 SV=4
393
>sp|Q9UHX1|PUF60_HUMAN Poly(U)-binding-splicing factor PUF60 OS=Homo sapiens OX=9606 GN=PUF60 PE=1 SV=1
559
>sp|Q06416|P5F1B_HUMAN Putative POU domain, class 5, transcription factor 1B OS=Homo sapiens OX=9606 GN=POU5F1B PE=5 SV=2
359
>sp|O14683|P5I11_HUMAN Tumor protein p53-inducible protein 11 OS=Homo sapiens OX=9606 GN=TP53I11 PE=1 SV=2
189
>sp|Q14671|PUM1_HUMAN Pumilio homolog 1 OS=Homo sapiens OX=9606 GN=PUM1 PE=1 SV=3
1186

$ paste - - < learner.txt  | awk -F"[|\t]" ' $NF>350 { print $2,$NF } '
P13674 534
Q7Z4N8 544
P04637 393
Q9UHX1 559
Q06416 359
Q14671 1186

$
0 голосов
/ 12 февраля 2019

Вы также можете попробовать Perl

perl -F"\|" -lane ' /^(\d+)/ and $1>350 and print $p,"\t",$1; $p=$F[1] ' 

с заданными входами

$ cat learner.txt
>sp|Q96A73|P33MX_HUMAN Putative monooxygenase p33MONOX OS=Homo sapiens OX=9606 GN=KIAA1191 PE=1 SV=1
305
>sp|P13674|P4HA1_HUMAN Prolyl 4-hydroxylase subunit alpha-1 OS=Homo sapiens OX=9606 GN=P4HA1 PE=1 SV=2
534
>sp|Q7Z4N8|P4HA3_HUMAN Prolyl 4-hydroxylase subunit alpha-3 OS=Homo sapiens OX=9606 GN=P4HA3 PE=1 SV=1
544
>sp|P04637|P53_HUMAN Cellular tumor antigen p53 OS=Homo sapiens OX=9606 GN=TP53 PE=1 SV=4
393
>sp|Q9UHX1|PUF60_HUMAN Poly(U)-binding-splicing factor PUF60 OS=Homo sapiens OX=9606 GN=PUF60 PE=1 SV=1
559
>sp|Q06416|P5F1B_HUMAN Putative POU domain, class 5, transcription factor 1B OS=Homo sapiens OX=9606 GN=POU5F1B PE=5 SV=2
359
>sp|O14683|P5I11_HUMAN Tumor protein p53-inducible protein 11 OS=Homo sapiens OX=9606 GN=TP53I11 PE=1 SV=2
189
>sp|Q14671|PUM1_HUMAN Pumilio homolog 1 OS=Homo sapiens OX=9606 GN=PUM1 PE=1 SV=3
1186

$ perl -F"\|" -lane ' /^(\d+)/ and $1>350 and print $p,"\t",$1; $p=$F[1] ' learner.txt
P13674  534
Q7Z4N8  544
P04637  393
Q9UHX1  559
Q06416  359
Q14671  1186

$
0 голосов
/ 12 февраля 2019
$ awk -F'|' '/^>/{v=$2; next} $0>=350{print v, $0}' file
P13674 534
Q7Z4N8 544
P04637 393
Q9UHX1 559
Q06416 359
Q14671 1186
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...