我正在爲我公司的S3存儲桶設置一個ETL過程,以便我們可以跟蹤我們的使用情況,並且由於Amazon使用空格,雙引號和方括號,所以我在分解S3日誌文件列時遇到了一些麻煩劃分列。正則表達式來分割Amazon S3桶日誌的列?
我發現這個正則表達式:[^\\s\"']+|\"([^\"]*)\"|'([^']*)'
對這個SO帖子:Regex for splitting a string using space when not surrounded by single or double quotes,這讓我非常接近。我只是需要幫助調整它忽略單引號和也之間的忽略空格「[」和「]」
這是我們從文件中的一個示例行:
dd8d30dd085515d73b318a83f4946b26d49294a95030e4a7919de0ba6654c362 ourbucket.name.config [31/Oct/2011:17:00:04 +0000] 184.191.213.218 - 013259AC1A20DF37 REST.GET.OBJECT ourbucket.name.config.txt "GET /ourbucket.name.config.txt HTTP/1.1" 200 - 325 325 16 16 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6" -
而這裏的格式定義:http://s3browser.com/amazon-s3-bucket-logging-server-access-logs.php
任何幫助,將不勝感激!
編輯:爲了響應FaileDev,輸出應該是包含在兩個方括號之間的任何字符串,例如, [foo bar],兩個引號,例如「富酒吧」或空間,例如。FOO條(其中兩個foo和酒吧將分別匹配我已經打破了我在下面的塊中提供到它自己的行例行每場比賽:
dd8d30dd085515d73b318a83f4946b26d49294a95030e4a7919de0ba6654c362
ourbucket.name.config
[31/Oct/2011:17:00:04 +0000]
184.191.213.218
-
013259AC1A20DF37
REST.GET.OBJECT
ourbucket.name.config.txt
"GET /ourbucket.name.config.txt HTTP/1.1"
200
-
325
325
16
16
"-"
"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6"
-
究竟應該輸出什麼? – FailedDev
我不敢相信更多人不需要這些信息!很好的問題,謝謝! – andy