いくつかのnginxログを日付で解析しようとしています。私はawkonelinerを作成して、次のように1日の一致するすべてのログを検索しました。
awk '/05\/May\/2012/ { print $0;}' /var/log/nginx/access.log
私がやりたいのは、bashを使用して数日から数か月にわたってループすることです。これが私が持っているものです
#!/bin/bash
for h in 2012
do
for i in Apr May
do
for j in 01 02 03 04 05
do
echo "/${j}\/${i}\/${h}/"
search_string="'/${j}\/${i}\/${h}/ { print \$0;}'"
echo $search_string;
awk $search_string /var/log/nginx/access.log
echo "${h} ${i} ${j} done"
done
done
done
ただし、これはawk行で次のように失敗します。
awk: 1: unexpected character '''
いくつかの変数をエスケープする必要があるようですが、これまでのところ解決策は見つかりませんでした。