Как я могу извлечь конкретную строку из текста - PullRequest
0 голосов
/ 14 января 2019

У меня есть файл .txt, подобный этому,

26S proteasome non-ATPase regulatory subunit 1 OS=Homo sapiens OX=9606 GN=PSMD1 PE=1 SV=1
Tensin-1 OS=Homo sapiens OX=9606 GN=TNS1 PE=1 SV=1
Integrin-linked protein kinase OS=Homo sapiens OX=9606 GN=ILK PE=1 SV=1
Glucose-6-phosphate isomerase (Fragment) OS=Homo sapiens OX=9606 GN=GPI PE=1 SV=1
Fibulin-5 OS=Homo sapiens OX=9606 GN=FBLN5 PE=1 SV=1
Tropomyosin alpha-1 chain (Fragment) OS=Homo sapiens OX=9606 GN=TPM1 PE=1 SV=1
Cadherin-1 OS=Homo sapiens OX=9606 GN=CDH1 PE=1 SV=1

Я хочу извлечь строки только после GN=

Я хочу получить такой вывод

PSMD1
TNS1
ILK
GPI
FBLN5
TPM1
CDH1

Ответы [ 2 ]

0 голосов
/ 14 января 2019

Вы можете использовать это awk на OSX:

awk -F ' GN=' '{sub(/[[:blank:]].*$/, "", $2); print $2}' file

PSMD1
TNS1
ILK
GPI
FBLN5
TPM1
CDH1

Эта команда awk использует GN= в качестве разделителя полей. $2 дает использование в качестве значения после этого токена, а функция sub удаляет текст, начинающийся с пробела в $2.

Это sed также должно работать:

sed -E 's/.* GN=([^[:blank:]]+).*/\1/' file
0 голосов
/ 14 января 2019

Это может работать для вас:

$ grep -Po 'GN=\K[^[:space:]]+' file
PSMD1
TNS1
ILK
GPI
FBLN5
TPM1
CDH1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...