Regex 解析nginx日志中的时间戳

Regex 解析nginx日志中的时间戳,regex,bash,nginx,Regex,Bash,Nginx,我需要帮助,因为我是新的日志解析。我试图提取所有状态为200的日志行,时间戳为15:35之前15小时。我无法计算要使用的正则表达式 以下是日志的示例: 198.104.78.160[26/Dec/2016:15:24:12-0500]200 190.50.175.65:8080 200 testtest.com GET/api/bid_request?feed=1&auth=qwerty&ip=85.194.119.3&ua=Mozilla%2F5.0+%28Windows+NT+6.1%3B+

我需要帮助,因为我是新的日志解析。我试图提取所有状态为200的日志行,时间戳为15:35之前15小时。我无法计算要使用的正则表达式

以下是日志的示例:

198.104.78.160[26/Dec/2016:15:24:12-0500]200 190.50.175.65:8080 200 testtest.com GET/api/bid_request?feed=1&auth=qwerty&ip=85.194.119.3&ua=Mozilla%2F5.0+%28Windows+NT+6.1%3B+Win64%3B+x64%29+applebkit%2F537.36+%28KHTML%2C+like+Gecko%29+Chrome%2F48.0.2564.97+Safari%2F537.36&lang=tr%2Ctr%2Ctr%3Bq%3Bq%3Bq%3Bq%3Bq%3Bq%3Bq%3Bq%3Bq%3Bq%3Bq%3Bq%3Bq%3Bq%3Bq%3Bq%3Bq%3Bq%3Bq%3Bq%3 HTTP/1.0----174.194.36.141-0.109-0.009美国/


您可以使用
awk
执行以下操作:

awk -v status_code=200 -v ts_at_hour=15 -v ts_before_hour=15 -v ts_before_min=35 '

    {
        match($0, /[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\s+\[[0-9]{2}\/[a-zA-Z]{3}\/[0-9]{4}:([0-9]{2}):([0-9]{2}):([0-9]{2})\s+[+-][0-9]{4}\]\s+([0-9]{3})/, items)

        if (items[1] == ts_at_hour && 
            items[1] <= ts_before_hour && 
            items[2] < ts_before_min &&
            items[4] == status_code){
          print $0
        }
    }
' data.txt
awk-v status\u code=200-v ts\u在小时=15-v ts\u在小时之前=15-v ts\u在小时之前=35'
{
匹配($0,/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\s+\[[0-9]{2}\/[a-zA-Z]{3}\/[0-9]{4}:([0-9]{2}):([0-9]{2}):([0-9]{2})\s++-[0-9]{4}]\s+[0-9]{3},项)
如果(项目[1]==ts_时&&
项目[1]