2013-04-22 74 views
0

我無法通過某些html代碼使用grep。Grep for html的最佳途徑

我試圖找到類似的字符串這個

<td><a href='/go/12229' target="_blank" rel="nofollow">product description here</a></td><td> $<font color='red'>0.25</font> 

我試圖概括公式來計算每條線是在$ 0.25,將改變部分是: HREF =「/去/ 12229' 的號碼後/去/會改變,但始終是一個數字5位數

產品說明可以是字母數字與空格和特殊字符

,價格可以是0.01什麼0.25

我已經嘗試製作下面這樣的公式,但它要麼不工作要麼不返回任何內容。

grep -c "href='/go/'[*] target="_blank" rel="nofollow">*</a></td><td> $<font color='red'>[0].[0-2][0-9]</font>" 

我認爲這與我沒有正確轉義特殊字符,但我不知道。

任何幫助表示讚賞。

+0

需要多少行來識別它?例如,知道有'go'href像'grep'go \/[0-9] \ {5 \}''就足夠了。如果是這樣,我會這樣做,然後傳遞給awk/gawk(或其他腳本語言)來測試值。 – n0741337 2013-04-22 18:17:55

+0

我需要的鏈接,產品說明和價格 – almyz125 2013-04-22 18:20:36

回答

0

好的 - 這要求每行都按照您的示例進行格式化,但是這應該爲您提供鏈接,說明和價格,其中每行介於0.01和0.25之間。這段代碼的內容的把他們像「priceawk」文件並使其可執行:

grep 'go\/[0-9]\{5\}' | awk -F"<" ' 
{ 
split($7, price_arr, ">") 

if(price_arr[ 2 ] > 0.00 && price_arr[ 2 ] < 0.26) 
    { 
    split($3, link_arr, "'\''") 
    split(link_arr[ 3 ], desc_arr, ">") 
    printf("%s %s %s\n", link_arr[ 2 ], desc_arr[ 2 ], price_arr[ 2 ]) 
    } 
} ' 

然後使用它像:

cat input | priceawk 

隨着我從你的線做了一個試驗輸入文件,我得到以下幾種輸出:

/go/12229 product description here 0.25 
/go/13455 find this line2 0.01 
/go/12334 find this line3 0.23 
/go/34455 find this line4 0.16 

的printf()函數可以提高給你的輸出形式不同,比目前的空間更有用的分隔符。

+0

我沒有得到任何輸出做我想要空間的回報是?我想把路徑放到我的文件中,你有'greptest'? – almyz125 2013-04-22 18:53:00

+0

是的。我將重新格式化答案,使其成爲一個文件,您可以將其轉變爲可執行文件。 – n0741337 2013-04-22 18:57:12

+0

嗯,我做了你說的,但shell仍然沒有輸出返回,也許它更容易讓它將輸出寫入文件? 謝謝你的方式所有的幫助! – almyz125 2013-04-22 19:12:46