如何使用sed打印html页面的正文内容

时间:2014-09-09 04:29:41

标签: bash sed

我想使用sed打印html文件的所有正文内容。我在互联网上找到了一种模式,但无法理解它是如何工作的。 模式是

/<body>/,/<\/body>/

我无法理解它是如何工作的......它是如何开始用身体线和印刷品直到它会来的。

有人请解释一下......

3 个答案:

答案 0 :(得分:3)

您正在使用的单行打印在与正则表达式<body>匹配的第一行和与正则表达式</body>匹配的第一行之间的所有行。它使用一个范围匹配,匹配从与第一个模式匹配的行开始的所有行,并以与第二个模式匹配的第一行结束。

sed -n '/pattern1/,/pattern2/p' file
  • -n禁止自动打印图案空间,p打印当前图案空间。

与sed命令类似,您可以使用Perl指定起始模式和结束模式。

perl -ne 'print if /pattern1/ .. /pattern2/' file

答案 1 :(得分:1)

sed命令首先获取开始模式并检查与开始模式匹配的行。如果一条线匹配,则它打印当前线和所有即将到来的线,直到打印出与结束图案匹配的线。

/start pattern/,/end pattern/

示例:

$ cat file
foo
blah
bar
blah
blah
foo
bar
$ sed -n '/foo/,/bar/p' file
foo
blah
bar
foo
bar

答案 2 :(得分:-1)

以下是一些awk变体:

此内容从START打印到END,但不是START也不是END

awk '/START/{f=1;next} /END/{f=0} f' file

awk '/END/{f=0} f; /START/{f=1}' file

此打印以START开头,包含END

开头
awk '/START/{f=1} /END/{f=0;print} f' file

awk '/START/{f=1} f; /END/{f=0}' file

awk '/START/,/END/' file