xai1981's blog

http://twitter.com/xai1981

ShellでHTTPRequestログを精査 1

アクセスログから特定のリクエストのみを抽出したいので、ローカルに落として来て、とりあえずサクラエディタで置換してみました。

ctrl + r
↓
置換前 ^(?!.*GET \/hogehoge).+$
↓
置換後 
↓
置換ボタン押下

アクセスログは一月分あり、1つのファイルにつき約50万行あります。サクラエディタの場合50万行の置換作業に30分以上かかって泣きそうになりました。

これじゃあ、アカンと言うことで shell で1行ずつ読み込んでごにょごにょしようと思います。まずは第一弾 shell で 特定のファイルから 1行ずつ読み込んで echo してみます。

1行読み込んで echo するスクリプト
[root@kabos ~]$ cat readline_one.sh 
#!/bin/sh

filename=$1

cat ${filename} | while read line
do
    echo ${line}
done
テスト用の読み込みテキストデータ
[root@kabos ~]$ cat data.txt 
0000000000000000000
1111111111111111111
2222222222222222222
3333333333333333333
4444444444444444444
5555555555555555555
6666666666666666666
7777777777777777777
8888888888888888888
9999999999999999999
実行結果
[root@kabosu ~]$ ./readline_one.sh data.txt
0000000000000000000
1111111111111111111
2222222222222222222
3333333333333333333
4444444444444444444
5555555555555555555
6666666666666666666
7777777777777777777
8888888888888888888
9999999999999999999

無事、1行ずつ読み込めました ^^

参考サイト