2011-05-18 80 views
1

我有一條線以下數據:兩個字符串之間用sed抓取值?

<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」例如價值,但我想不出正確檢索此。我嘗試的一件事是以下命令:

sed -n '/(assignstoday)/,/(\/assignstoday)/p' ~/test.txt 

任何幫助嗎?

回答

3
sed 's/.*(openissues)\(.*\)(\/openissues).*/\1/' test.txt 

一個快速的黑客可能滿足您的要求編輯:

sed -n '/openissues/p' test.txt | sed 's/.*(openissues)\(.*\)(\/openissues).*/\1/' 

但正則表達式是真的不解析HTML時要走的路。

+0

嗨尼爾,當我使用它輸出所有的原始內容,而不僅僅是價值,怎麼會來? – FLX 2011-05-18 11:57:54

+0

適用於您提供的樣本輸入。也許你有一個錯字 - 你是否複製並粘貼它? – 2011-05-18 12:02:08

+0

對不起尼爾,我的錯。我擴展了我的例子以顯示行爲。你可以看一下嗎?非常感謝 :) – FLX 2011-05-18 12:12:10

1

我想嘗試

VALUE=openissues 
sed '[email protected]*('"$VALUE"')\([^(]\+\).*@\[email protected]' 

也就是說,取代一切,除了你正在搜索的內容,與該內容的內容。

編輯:現在我看到尼爾的答案,實際上是一樣的,接受他的。我留下我的答案來定製你想要提取的值。

相關問題