0

所以我有一个看起来像这样的 sed 命令:

sed -n "/DXImageTransform.Microsoft.AlphaImageLoader(src='/,/',sizingMethod='crop');/p"
/Users/ME/Documents/weather/yahooWeather.html > /Users/ME/Documents/weather/out.txt

它正确地从文件中获取了我想要的 HTML,但是它仍然具有我用来搜索它的字符串(即“DXImageTransform.Microsoft.AlphaImageLoader(src='" & "',sizingMethod='crop') ;" 在文件的开头和结尾。我想删除这两个字符串。如何修改我的命令来做到这一点?

4

1 回答 1

2

这应该有效:

sed -n -e "1,/START/d" -e "/END/,$d" -e p file.html

我在那里使用-e选项分隔了 3 个命令,但您可以将它们全部放在一起,用;.

这就是他们所做的:

  • 1,/START/d-- 删除一个范围:从文件的第一行到匹配模式的行/START/
  • /END/,$d-- 删除一个范围:从匹配模式的行到文件末尾
  • p-- 打印该行(这些行与之前的模式不匹配)

更新

如果模式在第一行,则上述方法不起作用。使用 GNU sed,您可以像这样修复它:

sed -n -e "0,/START/d" -e "/END/,$d" -e p file.html

不幸的是,这不适用于 BSD sed

于 2013-04-06T18:49:43.127 回答