Sed Command在两个字符串之间获取文本,同时使用Terminal UNIX排除两个字符串

时间:2013-04-06 18:28:31

标签: linux unix command-line terminal

所以我有一个看起来像这样的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');“在文件的开头和结尾。我想删除这两个字符串。如何修改命令来执行此操作?

1 个答案:

答案 0 :(得分: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