如何从文本中提取特定的字符串

时间:2019-01-14 17:21:23

标签: bash macos

我有一个.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 :(得分:1)

这可能对您有用:

$ grep -Po 'GN=\K[^[:space:]]+' file
PSMD1
TNS1
ILK
GPI
FBLN5
TPM1
CDH1

答案 1 :(得分:0)

您可以在OSX上使用此awk

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