首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sed/awk :匹配模式并返回模式末尾和分号之间的所有内容

sed/awk :匹配模式并返回模式末尾和分号之间的所有内容
EN

Stack Overflow用户
提问于 2012-09-21 07:28:36
回答 4查看 2.5K关注 0票数 1

我有一句话:

<random junk>TYPE=snp;<more random junk>

我需要返回TYPE=末尾和;之间的所有内容(在本例中是snp,但它可以是多个文本字符串中的任意一个。

我尝试了各种sed / awk解决方案,但似乎无法使其正常工作。我感觉这是一个简单的问题,所以,很抱歉。

EN

回答 4

Stack Overflow用户

发布于 2012-09-21 08:05:11

需要GNU grep:

代码语言:javascript
复制
grep -Po '(?<=TYPE=)[^;]+'

含义:以"TYPE=“开头,查找一些非分号字符

票数 4
EN

Stack Overflow用户

发布于 2012-09-21 07:30:55

使用GNU sed的一种方式

代码语言:javascript
复制
sed -r 's/.*TYPE=([^;]+).*/\1/' file.txt
票数 3
EN

Stack Overflow用户

发布于 2012-09-22 20:14:32

因为您还标记了这个awk

代码语言:javascript
复制
$ text='<random junk>TYPE=snp;<more random junk>'
$ echo "$text" | awk -FTYPE= '{sub(/;.*/,"",$2); print $2}'
snp
$ text='foo=bar;baz=fnu;TYPE=snp;XAI=0;XAM=0'
$ echo "$text" | awk -FTYPE= '{sub(/;.*/,"",$2); print $2}'
snp

(仅使用变量来防止换行。)

或者,将其解析为一组variable=value对,而不仅仅是一串文本:

代码语言:javascript
复制
$ echo "$text" | awk -vRS=";" -F= '$1=="TYPE" {print $2}'
snp
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12522388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档