wolverine777
@wolverine777

Как сделать grep в строке которая содержит точку с запятой; ?

Привет, мне нужно "выцепить" из вот такой вот строки

ID=PMZ_0036570;Dbxref=InterPro:IPR000175,PANTHER:PTHR11616,PANTHER:PTHR11616:SF125,Pfam:PF00209,ProSiteProfiles:PS50267,SUPERFAMILY:SSF161070;Name=Slc6a18;desc=Sodium-dependent

участок который называется Name=blablabla (в данном конкретном случае - Name=Slc6a18)
Вышеуказанную строчку я получаю при помощи
awk '{print $9}' PPP_genes.gff3.txt | head -3
а дальше я пытаюсь сделать
awk '{print $9}' PPP_genes.gff3.txt | head -3 | grep "Name=" PPP_genes.gff3.txt

и ничего не выходит..

пытался сделать cut -d; -f 3 (это ж получается 3я колонка) - мне выдаётся ошибка, дескать -d не понимает точку с запятой...

В общем, я может и намудрил чего но мне просто надо из каждой строки "выцепить" это вот самое Name.

Подскажите, пожалуйста, как это сделать?

Спасибо
  • Вопрос задан
  • 252 просмотра
Решения вопроса 1
erge
@erge
Примус починяю
  • awk '{print $9}' PPP_genes.gff3.txt | head -3 | cut -d";" -f 3

  • awk '{print $9}' PPP_genes.gff3.txt | head -3 | grep -oP ";\KName=[^;]+"

  • awk '{print $9}' PPP_genes.gff3.txt | head -3 | sed 's/.*\(Name=[^;]*\).*/\1/'

  • [[ '`awk '{print $9}' PPP_genes.gff3.txt | head -3`' =~ .*(Name=[^;]+) ]] &&
        echo ${BASH_REMATCH[1]}

Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
ky0
@ky0
Миллиардер, филантроп, патологический лгун
Составьте регэксп, начинающийся с Name=, заканчивающийся точкой с запятой. То, что посередине - и выцепляйте.

https://regex101.com
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы