1

次のコードは、Web サイトからすべてのドメイン名を抽出し$domainhttrackデータ ストリームの値に設定します。

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

$domain の値は次のようになります...

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)”

変数内の個々のドメインを、1 つの結合されたコマンド ライン内でデータ ストリーム$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)"

$domainMySQL データ セルごとに 1 つのドメインを入力できるように、変数を個々のドメインに分割する方法がわかりません。また、コマンドがデータ ストリームである場合に、結果を MySQL にパイプする方法もわかりません。たぶん、for ループとカット コマンドが必要ですか?

4

1 に答える 1

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
于 2014-05-25T17:07:39.297 に答える