Apache log file pre-processing and write result to excel file

조회 수: 4 (최근 30일)
ahmed obaid
ahmed obaid 2015년 9월 29일
댓글: ahmed obaid 2015년 9월 30일
I have the following Apache log file format in a text file and need to read this file and write the output in an Excel file using MATLAB. This is an portion from my log file which arranged line by line
127.0.0.1 - - [22/Sep/2015:11:21:02 -0700] "GET /website1/images/gallery/12.jpg HTTP/1.1" 200 128606
127.0.0.1 - - [23/Sep/2015:11:21:02 -0700] "GET /website1/images/gallery/14.jpg HTTP/1.1" 200 74976
127.0.0.2 - - [24/Sep/2015:11:21:02 -0700] "GET /website1/images/gallery/11.jpg HTTP/1.1" 200 91233
127.0.0.3 - - [25/Sep/2015:11:21:02 -0700] "GET /website1/images/gallery/13.jpg HTTP/1.1" 200 86324
127.0.0.1 - - [26/Sep/2015:11:21:02 -0700] "GET /website1/images/gallery/15.jpg HTTP/1.1" 200 147557
127.0.0.4 - - [27/Sep/2015:11:21:02 -0700] "GET /website1/images/gallery/16.jpg HTTP/1.1" 200 156616
127.0.0.2 - - [27/Sep/2015:11:21:02 -0700] "GET /website1/images/gallery/17.jpg HTTP/1.1" 200 87804
127.0.0.6 - - [28/Sep/2015:11:21:02 -0700] "GET /website1/images/gallery/18.jpg HTTP/1.1" 200 43618
Hope to get output in an Excel file contain as following from column A contain IP , column B = date , column c=time , column D = action , column E= page-name , column F = image name , column G =status code:
Ip date time action
127.0.0.1 [22/Sep/2015] 11:21:02 "GET
page-name image -name status code
/website1/images/gallery/ 12.jpg 200
etc,, for remaining rows .. I have tried the following code for long time ...
fileID = fopen('logfile.txt');
C = textscan(fileID,'%s %s %f %f %f %f %f %f','Delimiter',','); % assuming you want double data types, change as required
fclose(fileID);
celldisp(C) % C is a cell array
xlwrite('D:\log.xls','c' ,'Sheet1','A');

답변 (1개)

Walter Roberson
Walter Roberson 2015년 9월 29일
textscan with '%s%*s%*s[%[^:]:%s%*s"%s%s%*s%f%*f' format. Take the 5'th output and split it at the last '/' to separate the page name from the image name. Wrap the date in '[' and ']' if you want. If you really want the " of "GET rather than just GET then remove the " from the format.

카테고리

Help CenterFile Exchange에서 Spreadsheets에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by