2012-04-23 67 views

回答

2

這可能會爲你工作:

sed ' 
> /<div id="header"><span id="navbar">/{ # search for start tags 
> s//\n/         # replace start tags with newline 
> :a          # label a 
> /\n<\/span><\/div>/bb     # search for end tags and if so goto label b 
> s/\n./\n/        # end tags not found bump along a character 
> ta          # goto label a if last substitution ok 
> :b          # label b 
> s///         # delete end tags and newline 
> /^$/d         # check for empty line and if so delete 
> }' file 

注:這期望開始/結束標籤在同一行上。

0

sed不支持.*?(貪婪匹配)工作。
您可以嘗試ssed(super sed)

+0

鑑於來源,我可以使用Android NDK編譯它們嗎?正如該網站所說,它不需要支持庫。如果我有編譯的二進制文件,sed命令是否按預期工作? – user1263513 2012-04-23 12:07:29

0

如果您的目標是從文件中刪除html標籤及其內容,您可以嘗試以下命令。

注意:以下所有命令都是內聯編輯。運行此命令後,您要更改的文件將立即更改。在測試之前,請備份您的文件。

如果標籤全部在一行上,您可以嘗試以下操作。下面

sed -i 's/<div id=\"header\"><span id=\"navbar\".*<\/span><\/div>//g' /yourfile 

如果標籤是在多個行上象例嘗試下面的命令。

<div id="header"><span id="navbar"> 
    ... Content ... 
</span></div> 

sed -i '/<div id=\"header\"><span id=\"navbar\">/,/<\/span><\/div>/g' /yourfile 

注:如果您在OS X上工作,你將需要改變(SED -i)至(SED -i '')

0

與SED將是:

testers="<div id="header"><span id=\"navbar\">... Content ...</span> some stuf </div>" 
echo $testers| sed -E 's/<[\w ="/]+>// g' 

解決了ssed代替sed巫手段(超級SED),您可以安裝在任何POSIX系統非常容易,所以在這裏我走了。

testers="<div id="header"><span id=\"navbar\">... Content ...</span> some stuf </div>" 
echo $testers| ssed -R -e 's/<[\w ="/]+>// g' 

結果是。

... Content ... some more stuf 

乾杯。