有人可以告诉我这里我可能做错了什么:
sed 's/&.*?;\s//'
我正在尝试删除除“此文字”之外的所有内容
lt;td rowspan="2" width="80" valign="top" >
<img src="http://foo.bar/image.jpeg" />
</td>
<td>
THIS TEXT

答案 0 :(得分: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
答案 1 :(得分:0)
您的正则表达式&.*?;\s
搜索:
&
.*
?
;
\s
但是样本文本中;
之后没有问号,也没有空格。
请注意,?
默认情况下不会被解释为重复运算符。如果需要,您需要使用sed -r
(或Mac上的sed -E
)启用“扩展”正则表达式。这是向后兼容的事情。
答案 2 :(得分: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