使用sed或awk进行选择

时间:2017-07-21 11:34:14

标签: bash awk sed escaping

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

之间的界限

<div class="bread crumb">

</div>

块内没有其他div,块内有多行。

我是否需要转义字符<>?,如下所示?

sed -n -e '/^\<div class=\"bread crumb\"\>$/,/^\<\/div\>$/{ /^\<div class=\"bread crumb\">$/d; /^\<\/div>$/d; p; }'

我的尝试:

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

3 个答案:

答案 0 :(得分:1)

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

如果您仍想使用sed执行此操作,请不要使用<> sed -ne '/<div class="bread crumb">/,/<\/div>/{//!p;}' file

试试这个:

//!p

window.onerror = function (msg, url, lineNo, columnNo, error) { var string = msg.toLowerCase(); var substring = "script error"; if (string.indexOf(substring) > -1){ alert('Script Error: See Browser Console for Detail'); } else { var message = [ 'Message: ' + msg, 'URL: ' + url, 'Line: ' + lineNo, 'Column: ' + columnNo, 'Error object: ' + JSON.stringify(error) ].join(' - '); alert(message); } return false; }; 部分输出除了与地址模式匹配的行之外的所有块。

答案 1 :(得分:1)

实际上,你只需要逃离/中的</div>,其余的就可以了。

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

答案 2 :(得分:0)

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

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