2014-05-25 142 views
0

這行代碼搜索網站,提取並打印出一個域名列表進行屏幕顯示。它完美的作品。如何在bash中將grep結果的值設置爲變量?

httrack --skeleton http://www.ilovefreestuff.com -V "cat \$0" | grep -iEo '[[:alnum:]-]+\.(com|net|org)' 

我需要將此grep模式匹配的結果設置爲一個變量,以便我可以將結果傳遞給mysql插入命令。不幸的是,我甚至無法將變量回顯到屏幕上。我究竟做錯了什麼?

httrack --skeleton http://www.ilovefreestuff.com -V "cat \$0" | domain=「$(grep -iEo '[[:alnum:]-]+\.(com|net|org)’)」 | echo $domain 

任何幫助,非常感謝。

問候,

+0

您的報價看起來很有趣。嘗試修復它們,看看你有沒有進一步的瞭解。 –

+0

我試圖刪除引號,我試過後面的蜱蟲。既不能給我一個結果。行情和沒有引號,沒有任何反應。如果我使用back ticks,我得到這個錯誤... bash:命令替換:第1行:意外的EOF,同時尋找匹配的''' bash:命令替換:第2行:語法錯誤:文件意外結束 – user3672303

回答

0

試試這個:

$ domain=$(httrack --skeleton http://www.ilovefreestuff.com -V "cat \$0" | grep -iEo '[[:alnum:]-]+\.(com|net|org)') 
$ echo "$domain" 

你可以用包括管整個命令爲$(..),你不能命令的管道輸出到命令替換。

+0

是的,這個因爲它將grep的輸出值設置爲$ domain變量,作爲從httrack數據流中提取的大量域。不幸的是,我不確定如何從這裏得到我的最終解決方案。我試圖提取域並將它們插入到MySQL數據庫中,因爲grep在運行時發現它們。表中每個字段一個域。我希望能夠在一個命令行中完成所有這些。我卡住了。回到繪圖板我猜。 – user3672303

+0

@ user3672303正如你已經接近一步,我會建議關閉這個問題,並打開另一個問題,你可以在'sql'或'mysql'標籤下更清楚地解釋這個問題。 –

+0

好的。涼。感謝jaypal的幫助。 – user3672303