使用以下工作:
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