首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用sed从字符串中提取文本?

如何使用sed从字符串中提取文本?
EN

Stack Overflow用户
提问于 2012-07-20 04:34:16
回答 5查看 244.3K关注 0票数 109

我的示例字符串如下:

代码语言:javascript
复制
This is 02G05 a test string 20-Jul-2012

现在,我想从上面的字符串中提取02G05。为此,我使用sed尝试了以下正则表达式

代码语言:javascript
复制
$ echo "This is 02G05 a test string 20-Jul-2012" | sed -n '/\d+G\d+/p'

但是上面的命令不打印任何内容,我认为原因是它不能根据我提供给sed的模式匹配任何内容。

所以,我的问题是我在这里做错了什么,以及如何纠正它。

当我用python尝试上面的字符串和模式时,我得到了我的结果

代码语言:javascript
复制
>>> re.findall(r'\d+G\d+',st)
['02G05']
>>>
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-07-20 04:39:57

您的sed可能不支持模式\d。请尝试使用[0-9][[:digit:]]

要只打印实际的匹配项(而不是整个匹配行),请使用替换。

代码语言:javascript
复制
sed -n 's/.*\([0-9][0-9]*G[0-9][0-9]*\).*/\1/p'
票数 114
EN

Stack Overflow用户

发布于 2012-07-20 04:42:44

使用grep -E怎么样?

代码语言:javascript
复制
echo "This is 02G05 a test string 20-Jul-2012" | grep -Eo '[0-9]+G[0-9]+'
票数 116
EN

Stack Overflow用户

发布于 2012-07-20 04:37:53

sed无法识别\d,请改用[[:digit:]]。您还需要转义+或使用-r开关( OS X上的-E)。

请注意,[0-9]同样适用于阿拉伯-印度数字。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11568859

复制
相关文章

相似问题

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