我想使用sed打印html文件的所有正文内容。我在互联网上找到了一种模式,但无法理解它是如何工作的。 模式是
/<body>/,/<\/body>/
我无法理解它是如何工作的......它是如何开始用身体线和印刷品直到它会来的。
有人请解释一下......
答案 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