2012-06-14 3 views
0

Я желаю, чтобы преобразовать мои журналы Nginx с помощью reqular выражения сценария следующим образом:Java регулярного выражения для Nginx журналов

оригинального журнал:

07.21.99.178 - - [01/Jun/2012:12:06:23 +0530] "GET /api?playSessionId=live_21_bc206d95-113f-4b49-989b-7dff77af51c410.190.217.2111338532565422 HTTP/1.1" 200 71 "-" "Jakarta Commons-HttpClient/3.1" 

Я хочу playSessionId как выход, для которого я использовал следующий сценарий:

#!/usr/bin/env ruby 

mon={"Jan" => '01',"Feb" => '02',"Mar" => '03',"Apr" => '04',"May" => '05',"Jun" =>  '06',"Jul" => '07',"Aug" => '08',"Sep" => '09',"Oct" => '10',"Nov" => '11',"Dec" => '12'} 

STDIN.each_line do |line| 
if line =~ /([\d+|\.]+) (\d+)\/(\w+)\/(\d+):(\d+):\d+:\d+ \+\d+] "GET \/api\?playSessionId=(^&*)/ 
d = "#{$3}-#{mon$2}-#{$1}" 
h = $4 
pid = $5 
puts "#{d}\t#{h}\t#{pid}" 
end 
end 

Но это, кажется, не работает :( может кто-нибудь сказать мне Java регулярное выражение для этого, так что я могу подать в суд на RLIKE улья

+1

Если я правильно понимаю, вы хотите эту строку 'live_21_bc206d95-113f-4b49-989b-7dff77af51c410.190.217.2111338532565422' – m0skit0

+0

совершенно правильно :) –

ответ

0

Я думаю, что вы хотите:

/([\d+|\.]+) (\d+)\/(\w+)\/(\d+):(\d+):\d+:\d+ \+\d+] "GET \/api\?playSessionId=([^ &]+)/ 

Вы можете использовать стандартные инструменты Unix для этой работы вместо (Grep + СЕПГ):

grep 'playSessionId=' foo.log | sed 's/^.*playSessionId=\([^ ]*\).*$/\1/' 
+0

Я использую его для преобразования s3 сырья журналы для обработанных журналов для hive на EMR –

+0

ur regex не работает :( –

0

я думать, что в регулярное выражение слишком сложно , Это сделает работу:

playSessionId=(.*)\s 
+0

это рубиновый скрипт? –

+0

Я не понимаю вопроса. Это регулярное выражение. – m0skit0

+0

Я помещаю скрипт на s3 и использую его для преобразования моя таблица улья, как я использую это, чтобы выполнить эту работу? –

 Смежные вопросы

  • Нет связанных вопросов^_^