首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用sed抓取两个字符串之间的值?

用sed抓取两个字符串之间的值?
EN

Stack Overflow用户
提问于 2011-05-18 19:29:19
回答 2查看 2.6K关注 0票数 1

我在一行中有以下数据:

代码语言:javascript
复制
<a href="#page-metadata-start" class="assistive">Go to start of metadata</a>
<div id="page-metadata-end" class="assistive"></div>

        <fieldset class="hidden parameters">
                        <input type="hidden" title="browsePageTreeMode" value="view">
        </fieldset>

        <div class="wiki-content">
           <p>(openissues)81(/openissues)</p><p>(assignstoday)0(/assignstoday)</p><p>(assignsweek)2(/assignsweek)</p><p>(replyissues)6(/replyissues)</p><p>(wrapissues)26(/wrapissues)</p>
        </div>

例如,我想获取"openissues“的值,但我不知道如何正确地检索它。我尝试的其中一件事是下面的命令:

代码语言:javascript
复制
sed -n '/(assignstoday)/,/(\/assignstoday)/p' ~/test.txt

有什么帮助吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-18 19:42:19

代码语言:javascript
复制
sed 's/.*(openissues)\(.*\)(\/openissues).*/\1/' test.txt

一个可能满足您的编辑要求的快速技巧:

代码语言:javascript
复制
sed -n '/openissues/p' test.txt | sed  's/.*(openissues)\(.*\)(\/openissues).*/\1/'

但是在解析HTML时,正则表达式确实不是一种可行的方法。

票数 3
EN

Stack Overflow用户

发布于 2011-05-18 19:48:12

我会试着

代码语言:javascript
复制
VALUE=openissues
sed  's@.*('"$VALUE"')\([^(]\+\).*@\1@'

也就是说,将除要搜索的内容之外的所有内容替换为该内容。

编辑:现在我看到了Neil的回答,这几乎是一样的,接受他的。我把我的答案留给你想要提取的值的定制。

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

https://stackoverflow.com/questions/6043936

复制
相关文章

相似问题

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