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

如果您搜索的字符串是恒定的,您可以使用一个简单的grep
:
grep -o "THIS TEXT" file.txt
否则,您可以使用sed
和一些模式匹配,尝试:
sed -e 's/&.*;$//' -e '/^$/d' -e '/^lt;td/d' file.txt
您可能需要包含多个表达式,例如:-e '/^lt;td/d'
删除数据文件中的其他不需要的行,如果它包含它们。
高温高压
你是这个意思吗?
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
您的正则表达式&.*?;\s
搜索:
&
.*
?
;
\s
但是示例文本中没有问号,也没有空格;
。
请注意,?
默认情况下不会将其解释为重复运算符。如果需要,您需要使用sed -r
(或sed -E
在 Mac 上)启用“扩展”正则表达式。这是向后兼容的事情。