1

次のようなエントリがたくさんあるアクセスログを見ています。

localhost_access_log.2012-05-07.txt:129.223.57.10 - - [07/May/2012:00:02:11 +0000] 2434 "POST /maker/www/jsp/opp/OpportunityForm.do HTTP/1.1" 302 - "https://dm2.myjones.com/maker/www/jsp/opp/Opportunity.jsp?screenDisplay={0}&forecastIcon={1}" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; InfoPath.2; MS-RTC LM 8)"

日時スタンプの後の数字は実行時間であり、引用符で囲まれた文字列はURLです。

sed、URL、応答時間を変更して、次の形式にしたい

URL, response time

例えば

POST /maker/www/jsp/opp/OpportunityForm.do HTTP/1.1,  2434 
4

2 に答える 2

2

sed:

sed 's/^[^]]\+\] \([[:digit:]]\+\) \("[^"]\+"\).*/\2,\1/' inputfile

パール:

perl -lne 'print "$2,$1" if /.*? (\d+) (".*?")/'
于 2012-05-14T16:48:28.463 に答える
1

awk次のように、6 番目、7 番目、8 番目、および 9 番目のエントリを印刷するために使用できます。

awk '{print $7, $8, $9, ", " $6}' <access_log>

出力:"POST /maker/www/jsp/opp/OpportunityForm.do HTTP/1.1" , 2434

awkデフォルトでは、フィールドはスペースで区切られています。nthに格納され$nます。したがって、入力行で:

$7: "POST
$8: /maker/www/jsp/opp/OpportunityForm.do
$9: HTTP/1.1"
$6: 2434
于 2012-05-14T15:47:52.140 に答える