我有一句话:
<random junk>TYPE=snp;<more random junk>
我需要返回TYPE=末尾和;之间的所有内容(在本例中是snp,但它可以是多个文本字符串中的任意一个。
我尝试了各种sed / awk解决方案,但似乎无法使其正常工作。我感觉这是一个简单的问题,所以,很抱歉。
发布于 2012-09-21 08:05:11
需要GNU grep:
grep -Po '(?<=TYPE=)[^;]+'含义:以"TYPE=“开头,查找一些非分号字符
发布于 2012-09-21 07:30:55
使用GNU sed的一种方式
sed -r 's/.*TYPE=([^;]+).*/\1/' file.txt发布于 2012-09-22 20:14:32
因为您还标记了这个awk
$ 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对,而不仅仅是一串文本:
$ echo "$text" | awk -vRS=";" -F= '$1=="TYPE" {print $2}'
snphttps://stackoverflow.com/questions/12522388
复制相似问题