У меня есть количество N последовательности в файле как это
>668|CAX10446 conserved hypothetical protein
MSIRGVGGNGNSRIPSHNGDGSNRRSQNTKNKVEDRVRSLYSSRSNENRESPYAVVDVSSMIESTPTSGE
TTRASRGVFSRFQRGLGRVADKVRRAVQRAWSSVSIRRSSATRATESRSSSRTARGASSGYKEYSPSAAR
>669|CAX10447 conserved protein
MSIRGVGGNGNSRIPSHNGDGSNRRSQNTKNKVEDRVRSLYSSRSNENRESPYAVVDVSSMIESTPTSGE
TTRASRGVFSRFQRGLGRVADKVRRAVQRAWSSVSIRRSSATRATESRSSSRTARGASSGYKEYSPSAAR
или как это
>gi|76167242|gb|AAX50250.1| hypothetical protein CTA_0001
MSIRGVGGNGNSRIPSHNGDGSNRRSQNTKNKVEDRVRSLYSSRSNENRESPYAVVDVSSMIESTPTSGE
TTRASRGVFSRFQRGLGRVADKVRRAVQRAWSSVSIRR
Теперь, мне нужен a grep
команда для удаления конкретного слова или числа в первой строке.
Вывод должен быть:
>CAX10446 conserved hypothetical protein
MSIRGVGGNGNSRIPSHNGDGSNRRSQNTKNKVEDRVRSLYSSRSNENRESPYAVVDVSSMIESTPTSGE
TTRASRGVFSRFQRGLGRVADKVRRAVQRAWSSVSIRRSSATRATESRSSSRTARGASSGYKEYSPSAAR
или
>AAX50250.1| hypothetical protein CTA_0001 [Chlamydia trachomatis A/HAR-13]
MSIRGVGGNGNSRIPSHNGDGSNRRSQNTKNKVEDRVRSLYSSRSNENRESPYAVVDVSSMIESTPTSGE
TTRASRGVFSRFQRGLGRVADKVRRAVQRAWSSVSIRRSSATRAAESRS
SSRTARGASSGYREYSPSAAR
Мне нужна команда grep, чтобы сделать это действие, я использовал sed
но это удалило первую строку, идентификатор, таким образом, трудно определить, который последовательность который.
Похоже, что Вы хотите удалить все перед последним |
символ. Однако Ваш второй пример имеет |
после идентификатора и перед hypothetical protein
. По-видимому, в этом случае, Вы хотите удалить все перед последним |
, который не сопровождается пространством.
Вот один путь:
$ sed 's/| / /; s/^[^ ]*|/>/' file.pep
>CAX10446 conserved hypothetical protein
MSIRGVGGNGNSRIPSHNGDGSNRRSQNTKNKVEDRVRSLYSSRSNENRESPYAVVDVSSMIESTPTSGE
TTRASRGVFSRFQRGLGRVADKVRRAVQRAWSSVSIRRSSATRATESRSSSRTARGASSGYKEYSPSAAR
>AAX50250.1 hypothetical protein CTA_0001
MSIRGVGGNGNSRIPSHNGDGSNRRSQNTKNKVEDRVRSLYSSRSNENRESPYAVVDVSSMIESTPTSGE
TTRASRGVFSRFQRGLGRVADKVRRAVQRAWSSVSIRR
Эти s/| / /;
удаляет любой |
сопровождаемый пространством. Это удалит |
от AAX50250.1|
. Эти s/^[^ ]*|/>/
ищет >
в начале строки (^>
) и удаляет самую длинную строку символов ([^ ]
) непространства до последнего |
на строке.
Если Вы хотите сделать это с grep. Необходимо считать 3 строки после каждой пустой строки и скопировать ее в переменную. Необходимо сократить последнюю часть переменной.
синтаксический анализатор сделает;
Первый reverse
строка
Второй cut
строка с |
и становится первой
Треть reverse
строка
echo $yourstring |rev |cut -d'|' -f1|rev
BTW, который это не удалит, только шоу Вы часть. Если Вы хотите сохранить вывод, перенаправляют его в файл.
echo $yourstring |rev |cut -d'|' -f1|rev > yournewfile