補助変数へのアクセス

補助変数へのアクセス
for x in `cat /var/www/vhosts/example.com/statistics/logs/access_log.processed | awk '{print $1}' | sort | uniq -c | sort -nr | awk {'if ($1 > 2000) print $2'}`; 
do
    #Works        
    printf "$x"     

    #Does not work
    printf "$1"
done

2000を超える要求を試みるIPアドレスをブロックしようとしています。実際、上記のコードは2つの部分の組み合わせです。

まず、

cat /var/www/vhosts/example.com/statistics/logs/access_log.processed | awk '{print $1}' | sort | uniq -c | sort -nr

私はすべてのIPアドレスを収集、並べ替え、計算します。以下は例の結果です。

4565 8.8.8.8
3245 7.7.7.7

次に各結果を繰り返し、試行回数が2000を超えていることを確認します。

awk {'if ($1 > 2000) print $2'}

$1試行回数で、$2IPです。

soは$2別の名前で保存され、$xforループで使用できます。しかし、$1forループ内でどのように使用できますか?

ベストアンサー1

while代わりにループを使用forしてawk

while read x y; do
  echo $y $x
done << EOF
example one
example two
EOF

おすすめ記事