2014-05-25 28 views
1

以下代码从网站中提取所有域名,并将其从httrack数据流中设置为$domain的值。如何将我的bash命令的变量值输入到MySQL中?

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

$域的值看起来像这样...

googlesyndication.com facebook.com facebook.com ilovefreestuff.com ilovefreestuff.com facebook.com facebook.com ilovefreestuff.com ilovefreestuff.com peadig.com facebook.net ilovefreestuff.com w3.org ilovefreestuff.com yoast.com ilovefreestuff.com

我有我的数据库设置和该命令完美的作品。

mysql -pPASSWORD -e "INSERT INTO domains.domains (domains) VALUES ($domain)” 

我想变$domain中的每个单独的域插入到我的MySQL数据库从httrack数据流的一个组合的命令行内的飞行。因此,在我疯狂的脑海中,它应该看起来类似于下面的...不幸的是,这不起作用。我没有输出,只是另一个bash提示符。

domain=$(httrack --skeleton http://www.ilovefreestuff.com -V "cat \$0" | grep -iEo '[[:alnum:]-]+\.(com|net|org)') | mysql -pPASSWORD -e "INSERT INTO domains.domains (domains) VALUES ($domain)" 

我不知道如何将$domain变量切割成单独的领域,所以我可以进入每个MySQL数据单元一个域,而我不能确定的结果到MySQL如何管鉴于命令是一个数据流。也许我需要一个for循环和一个剪切命令?

回答

1

也许我需要一个for循环和一个剪切命令?

你说的。它不会是一个班轮,但这应该工作:

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

for single_domain in $domain 
do 
    mysql -pPASSWORD -e "INSERT INTO domains.domains (domains) VALUES ($single_domain)" 
done 
+1

是的,这项工作。这个解决方案的问题是httrack数据流非常大,httrack命令可能会在一些网站上运行几个小时和/或几天。有时它永远不会完成。因此,我希望能够实时导入域名。有没有更好的方式来完成我想要的结果? – user3672303

+0

@ user3672303够公平的。你基本上希望插入在每个域上实时发生并且不是批量的,正确的? – JakeGould

+0

是的,这是我正在寻找的解决方案。 – user3672303

相关问题