2011-12-21 86 views
5

我正在使用sed匹配所有小於('<')或大於('>')的符號。我只想匹配單個字符sed /正則表達式:如何匹配字符串中的'<' or '>'

我的目標是分別用' <''> '(確保它們周圍有空白區域,以便我可以更輕鬆地解析它們)替換它們。

例如,它會匹配: (沒有在標籤內的空間)

<p>Hey this is a paragraph.</p><p>And here is another.</p> 

..並把它變成(注意空格)

<p> Hey this is a paragraph. </p> <p> And here is another. </p> 



這是我最初的(錯誤)猜測是:

sed 's/<{1}|>{1}/ <> /' ... 


它匹配整個單詞/行,這是不希望的,它也不能正確替換。

無論如何,任何幫助將不勝感激!謝謝!

+1

您_really_不想用正則表達式解析HTML。使用HTML解析器。 (請參閱http://stackoverflow.com/a/1732454/這是對SO有最好的回覆答案之一) – geoffspear 2011-12-21 15:11:51

+0

@Wooble:雖然我一般同意你的斷言,但使用正則表達式仍然可以測試和就像...如果它超過了這個,請使用適當的解析器。 – 0xC0000022L 2011-12-21 15:27:29

+0

哈哈是的,我知道。我見過那個。我正在爲perl中的一小部分標籤寫一個玩具學術HTML格式化程序。我只是使用sed和正則表達式來確保它有我的Perl代碼需要的空白。 – jiman 2011-12-21 15:30:43

回答

5

嘗試兩次換人,使其更容易:

sed 's/</ </g ; s/>/> /g' file 
+1

不錯。謝謝。 – jiman 2011-12-21 15:27:38

+1

或者你可以這樣做 - 'sed -e's/ /&/ g'file' – 2011-12-21 17:07:37