Bash 使用sed或awk选择

Bash 使用sed或awk选择,bash,awk,sed,escaping,Bash,Awk,Sed,Escaping,我试图选择html文件中两个标记之间的行。我尝试过使用sed和awk,但我认为我逃避某些角色的方式存在问题。我见过一些类似的问题和答案,但给出的例子很简单,没有特殊的字符。我想我的逃跑才是问题所在。我需要两条线之间的线 及 块内没有其他div,并且块内有多条线 我是否需要转义字符和?如下所示 sed -n -e '/^\<div class=\"bread crumb\"\>$/,/^\<\/div\>$/{ /^\<div class=\"bread crum

我试图选择html文件中两个标记之间的行。我尝试过使用sed和awk,但我认为我逃避某些角色的方式存在问题。我见过一些类似的问题和答案,但给出的例子很简单,没有特殊的字符。我想我的逃跑才是问题所在。我需要两条线之间的线

块内没有其他div,并且块内有多条线

我是否需要转义字符
如下所示

sed -n -e '/^\<div class=\"bread crumb\"\>$/,/^\<\/div\>$/{ /^\<div class=\"bread crumb\">$/d; /^\<\/div>$/d; p; }'
sed-n-e'/^\$/,/^\$/{/^\$/d;/^\$/d;p;}'
我的awk尝试:

awk '/\<div class=\"bread crumb\"\>/{flag=1;next}/\<\/div\>/{flag=0}flag'
awk'/\/{flag=1;next}/\/{flag=0}flag'

您应该为该作业使用html解析器

如果您仍然想使用sed执行此操作,请不要转义用于的

试试这个:

sed -ne '/<div class="bread crumb">/,/<\/div>/{//!p;}' file
sed-ne'//,//{/!p;}文件

//!p
part输出除与地址模式匹配的行之外的所有块。

您应该使用html解析器来完成该任务

如果您仍然想使用sed执行此操作,请不要转义用于的

试试这个:

sed -ne '/<div class="bread crumb">/,/<\/div>/{//!p;}' file
sed-ne'//,//{/!p;}文件

//!p
部分输出除与地址模式匹配的行之外的所有块。

实际上,您只需在
中转义
/
,其余的就可以了

sed -n '/<div class="bread crumb">/,/<\/div>/{//!p}' 
sed-n'//,/{/!p}'

实际上,您只需要在
中退出
/
,其余的就可以了

sed -n '/<div class="bread crumb">/,/<\/div>/{//!p}' 
sed-n'//,/{/!p}'

只需在awk中使用字符串匹配:

awk '$0=="</div>"{f=0} f{print} $0=="<div class=\"bread crumb\">"{f=1} ' file
awk'$0=='{f=0}f{print}$0=='{f=1}'文件

只需在awk中使用字符串匹配:

awk '$0=="</div>"{f=0} f{print} $0=="<div class=\"bread crumb\">"{f=1} ' file
awk'$0=='{f=0}f{print}$0=='{f=1}'文件

虽然
sed
awk
可能能够完成某些输入的工作,但使用非HTML感知工具解析HTML被认为是不好的做法。您应该看一看
xpath
,它是一个专门用于解析HTML/XML文件的工具,发布初始HTML片段和预期的结果韧带链接
sed
awk
可能可以为某些输入做这项工作,但使用不支持HTML的工具解析HTML被认为是不好的做法。您应该了解一下
xpath
,它是一个专门用于解析HTML/XML文件的工具,用于发布初始HTML片段和预期的resultobligatory链接