我想按日期來分析一些nginx的日誌。我已經寫了一個awk oneliner找到所有匹配的日誌一天,如:循環在bash準備awk的輸入語句
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 '''
好像我需要逃避一些變數,但我還沒有找到一個解決辦法爲止。不需要
打印$ 0不是必需的,因爲它是默認操作。 – jordanm
爲什麼不把整個事情寫入AWK? –
請注意,awk不會對引號做任何特殊處理 - 引號(單引號和雙引號)是將單詞組合爲單元的shell機制。 –