找到匹配子字符串的第一个值

时间:2016-09-19 05:20:37

标签: regex string awk

第9列有多个以“;”分隔的值。我试图在标签限制文件的第9列中的“name_id”之后找到第一次出现的字符串 - 文件的第一行看起来像这样。

1   NY  state   3102016 3102125 .   +   .   name_id "ENSMUSG8868"; trans_id "ENSMUST00000082908"; number "1"; id_name "Gm26206";ex_id "ENSMUSE000005";

有多个值以“;”分隔在第9列。我可以拿出这个命令来拉出最后一个“ENSMUSE000005”id

sed 's|.*"\([0-9_A-Z]\+\)".*|\1|' input.txt | head

可以用awk中的正则表达式完成吗?非常感谢!

1 个答案:

答案 0 :(得分:2)

echo $x |awk -F';' '{split($1,a," ");gsub(/"/ ,"" ,a[10]);print a[10]}'
ENSMUSG8868

其中x是你的行。

根据OP的评论:

echo $x |awk -F';' '{split($1,a," ");gsub(/"/ ,"" ,a[10]);print a[1],a[10]}'
1 ENSMUSG8868