コマンドの結果を、for 文で処理する
Contents
コマンドの結果を配列受け取って処理する
lsの結果を変数に代入して、その変数をfor文で処理する方法を初回します。以下ではFindの結果をFor文で処理しています
#!/bin/bash flist=`find /etc/httpd/conf.d -type f` for a in $flist; do echo $a done
使い方が色々ありますが、以下のサンプルでは、apacheのログファイルでアクセス数が多いIPアドレスを上位10個を集計しています。
集計するファイルを「/etc/httpd/logs」にある過去のログも含めた「access_log」を対象していて、過去のファイルも含む場合は、「ls /etc/httpd/logs/|grep “^access_log"」で取得しています。
IPアドレスの上位10個は「cat <ファイル名> | cut -f 1 -d ' ' | sort | uniq -c | sort -nr | head -10」で集計しています。
#!/bin/bash LOGDIR=/etc/httpd/logs ASLOG=`ls /etc/httpd/logs/|grep "^access_log"` for a in $ASLOG; do cat $LOGDIR/$a | cut -f 1 -d ' ' | sort | uniq -c | sort -nr | head -10 done
ディスカッション
コメント一覧
まだ、コメントがありません