0

有人可以告诉我我在这里可能做错了什么:

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

我正在尝试删除除“此文本”之外的所有内容

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

4

3 回答 3

0

如果您搜索的字符串是恒定的,您可以使用一个简单的grep

grep -o "THIS TEXT" file.txt

否则,您可以使用sed和一些模式匹配,尝试:

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

您可能需要包含多个表达式,例如:-e '/^lt;td/d'删除数据文件中的其他不需要的行,如果它包含它们。

高温高压

于 2012-07-12T03:49:47.657 回答
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
于 2012-07-12T04:46:17.967 回答
0

您的正则表达式&.*?;\s搜索:

  • 一个人&
  • 任意多个任意字符.*
  • 一个问号?
  • 一个分号;
  • 一个空格字符\s

但是示例文本中没有问号,也没有空格;

请注意,?默认情况下不会将其解释为重复运算符。如果需要,您需要使用sed -r(或sed -E在 Mac 上)启用“扩展”正则表达式。这是向后兼容的事情。

于 2012-07-12T03:55:45.287 回答