2014-09-05 56 views
0
$ sed -n '/<body>/,/<\/body>/p' hello.html 

该命令正​​常工作,并给出了预期的结果。 我想打印只有那些之间和生产线(包括这些标签也一样)的html文件命名为hello.html如何在sed脚本中使用-n标志,我用它并给出错误

,但是当我尝试创建命名为html-body.sed一个sed脚本使用此命令为:

-n /<body>/,/<\/body>/p 

,当我尝试运行它....

$ sed -f html-body.sed hello.html 

提示错误为:

sed: file html-body.sed line 1: unknown command: `-' 

为什么在sed脚本中写入相同命令时会出现此错误。

+6

你不能使用任何'-'一个脚本文件中选择使用sed – 2014-09-05 19:30:54

+0

作为@Jidder说,你不能把sed命令行参数到SED程序脚本文件。您可以将整个sed命令放入脚本中,也可以在命令行中使用-n。 – 2014-09-05 20:16:32

回答

1

sed脚本只允许持有sed文本处理命令,不是选项sed本身。

这些选项需要在实际的命令调用上。

,您仍然可以使用一个sed脚本,但你必须与称之为选项:

sed -n html-body.sed hello.html 

有一件事你可以做的是切换到更强大的文本处理工具,如awk与下面的脚本:

/<body>/ {e=1} 
      {if(e==1){print}} 
/<\/body>/ {e=0} 

然后只需运行:

awk -f thatscript.awk inputfile 
相关问题