我试图在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'
答案 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