/ /特定の文字列が存在する場合にはN番目の単語を表示するBash - linux、bash

特定の文字列が存在する場合にN番目の単語を出力するためのBash - linux、bash

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