IHSのアクセスログでは、401の応答がある場合は、1行ずつ情報を取得する必要があります。
以下はフォーマットであり、ログを調べる必要があります 1行ずつ (この例では123または432である)ユーザーのプロパティの前に特定の番号を取得するには、その行に401応答がある場合に限ります。
行のn番目の単語が401であれば、n番目の列から番号を取得して印刷します。
myhost.com xxx.x.xxx.x aaa.aa.aa.aaa - - [14/Aug/2013:10:44:55 +1000] "GET /http/user=123 HTTP/1.1" 401 55 "-" "Apache-HttpClient/4.2.3 (java 1.5)" 21293 80 0
myhost.com xxx.x.xxx.x aaa.aa.aa.aaa - - [14/Aug/2013:10:45:55 +1000] "GET /http/user=432 HTTP/1.1" 401 55 "-" "Apache-HttpClient/4.2.3 (java 1.5)" 21293 80 0
回答:
回答№1は2空白または "="記号でレコードをトークン化し、12番目のフィールドが401の場合は10番目のフィールドを出力します。
awk -F" |=" "$12 ~/401/{print $10}" inputFile
回答№2の場合は0
perl -F"s|=" -lane "print $F[9] if $F[11] == 401" your_file.txt