するとき
grep index.html /var/log/apache2/other_vhosts_access.log | awk '{print $1 $13}'
デフォルトでは、スペース区切り文字があります。
"
と区切り文字の両方を使用する方法
:
www.example.com:443 1.2.3.4 - - [01/Feb/2021:15:07:35 +0100] "GET /index.html HTTP/1.1" 200 8317 "https://www.example.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36"
awk
たとえば、?を使用してIPとユーザーエージェントを取得できます。
使ってawk -F'["]'
もあまり効果はないようです。
予想される構文解析は次のとおりです。
www.example.com:443
1.2.3.4
-
-
[01/Feb/2021:15:07:35 +0100]
"GET /index.html HTTP/1.1"
200
8317
"https://www.example.com/"
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36"
ベストアンサー1
役割クラスにスペースを含める必要があります。
echo 'word1 word2"word2 word4"word5' |
awk -F '[ "]' '{ for (i = 1; i <= NF; ++i) { print $i } }'