Bash は Xargs を使用して複数のクエリを実行します。

Bash は Xargs を使用して複数のクエリを実行します。

私は次のようなものが欲しいこれに関して:

cat infile | xargs -I {} -P3 curl {} -o /dev/null --silent --head --write-out "%{http_code} {}\n" > outfile

しかし、このスクリプトを使用すると(xargsを含む複数のクエリを実行するために):

for ip in `cat infile`; do
    for sub in "" "www." "ftp."; do
            host -t a "${sub}${ip}";
    done
done | grep address | awk '{ print $4 }' > out

入力ファイル:

google.com
facebook.com

結果ファイル:

172.217.172.14
172.217.30.196
157.240.6.35
31.13.67.35

答え1

xargsを使用すると、bashを呼び出して目的の操作を実行できます。

cat infile \
     | xargs -I {} -P3  bash -c 'for sub in "" "www." "ftp."; do host -t a "${sub}{}" ; done '

このコマンドの上に必要なものを追加できます。

cat infile \
     | xargs -I {} -P3  bash -c 'for sub in "" "www." "ftp."; do host -t a "${sub}{}" ; done '  \
     | MY_POWER_FULL_SED_OR_GREP 

または、bashコマンドにgrepを追加したい場合

cat infile \
     | xargs -I {} -P3  bash -c 'for sub in "" "www." "ftp."; do host -t a "${sub}{}" ; done | MY_POWER_FULL_SED_OR_GREP '

関連情報