ダブルクォーテーションで囲まれた文字列の抜き出し

ダブルクォーテーションで囲まれた文字列の抜き出し、例えば、

148.251.124.174 - - [17/Apr/2015:03:24:16 +0900] "GET /archives/category/%E6%96%B0%E8%A3%BD%E5%93%81-2/%E4%BD%8F%E5%AE%85%E5%95%86%E5%93%81/page/4 HTTP/1.0" 200 11895 "-" "Mozilla/5.0 (compatible; MJ12bot/v1.4.5; http://www.majestic12.co.uk/bot.php?+)"

からユーザーエージェントを読み込みたい時、抜き出しと検索するとsedコマンドが出てくるが、それよりも、awkコマンドのダブルクォーテーション区切りを用いたほうが楽。

例(もっと効率いい方法があるかも)

  • sed(無理矢理)
cat log.txt | sed -e 's/[^"]*"[^"]*"[^"]*"[^"]*"[^"]*"\([^"]*\)"[^"]*/\1/'
  • awk
cat log.txt | awk -F\" '{print $6}'