2012-07-12 33 views
0

可能有人請告訴我什麼,我可能是錯在這裏做:正則表達式語法建議需要

sed 's/&.*?;\s//' 

我想刪除所有,但「這TEXT」

lt;td rowspan="2" width="80" valign="top" >
 
<img src="http://foo.bar/image.jpeg" />
 
</td>
 
<td>
 
THIS TEXT
 

 
+1

試圖用什麼取代什麼? – 2012-07-12 01:27:56

+0

給出了空的替換目標,即'//',你可能想要編輯你的問題來重新修改它爲「刪除除''本文'之外的所有內容」。你希望剩下1行還是4行空白,'THIS TEXT'和另一個空白行?祝你好運。 – shellter 2012-07-12 02:44:15

+0

謝謝,我編輯了這個問題。即時通訊設法刪除所有'沒有空行的'本文' – drewsdesign 2012-07-12 03:13:56

回答

0

如果字符串您的搜索是恆定的,你可以只使用一個簡單的grep

grep -o "THIS TEXT" file.txt 

否則,你可以使用sed有的模式匹配,嘗試:

sed -e 's/&.*;$//' -e '/^$/d' -e '/^lt;td/d' file.txt 

您可能需要包括像多個表達式:-e '/^lt;td/d'在你的數據文件中刪除等不良行,如果它包含他們。

HTH

+0

sed示例正是我需要的,謝謝 – drewsdesign 2012-07-12 04:33:05

+0

@ user1519395,很高興我可以幫助:-) – Steve 2012-07-12 05:52:31

0

你的正則表達式&.*?;\s搜索:

  • 一個apersand &
  • 任意多個任意字符.*
  • 問號?
  • 一個分號;
  • 一個空白字符\s

但沒有問號,並在您的示例文本;後沒有空格。

請注意,?不被解釋爲默認情況下的重複操作符。如果需要,您需要使用sed -r(或Mac上的sed -E)啓用「擴展」正則表達式。這是一個向後兼容的事情。

+0

謝謝你的回答,它有助於我進一步理解我'試圖達到目標 – drewsdesign 2012-07-12 04:35:17

0

您的意思是?

bash:/home/tene>cat file 
lt;td rowspan="2" width="80" valign="top" >
 
<img src="http://foo.bar/image.jpeg" />
 
</td>
 
<td>
 
THIS TEXT
 

 

bash:/home/tene>sed -e '/^[&l]/d' -e 's/
$//g' file 
THIS TEXT