使用以下工作:
grep -Po "<div class=\"rpt_price rpt_price_1\">\K(.*)(?=</div>$)"
这里描述的-P
和-o
选项在unix stackexchange。 \K
在unix stackexchange上也有很好的解释。
\K(.*)
的使用将只输出匹配和下面的文本。用(?=...$)
我排除了其余的文字。
测试:
echo "<div class=\"rpt_price rpt_price_1\">THE TEXT</div>" | grep -Po "<div class=\"rpt_price rpt_price_1\">\K(.*)(?=</div>$)"
输出:
THE TEXT
另一种可能性是直接使用perl
,解释是here on superuser:
perl -ne 'print $1 if /\<div class="rpt_price rpt_price_1">(.*?)\<\/div>/s'
测试:
echo "<div class=\"rpt_price rpt_price_1\">THE TEXT</div>" | perl -ne 'print $1 if /\<div class="rpt_price rpt_price_1">(.*?)\<\/div>/s'
输出:
THE TEXT
grep和正则表达式是用来解析HTML ...完全错误的工具,如果正则表达式是你的情况不够好,你需要'grep -oP'这是不可用的...所以然后使用'sed'或'awk' ... grep主要是为了找到不是文本操作 – Sundeep