クマの手も借りたい
馬とテニスとリラックマが好きな IT 系のエンジニアです。
Linux

awkで特定のカラムに文字列が含まれているか判定

awk を使ってテキスト解析をする際に、目的の値が決まった場所にあれば楽なのですがそうでない時もあります。

今回は apache のアクセスログのリクエスト URL の中から、特定のリクエストパラメータが含まれているログを抽出したいと思います。

ただし、ログは「リクエストURL」だけではなくすべての項目が欲しいと仮定します。

アクセスログで邪魔な項目

フィルタリングを掛ける際に邪魔になってくるのが、リファラーが出力されているケースですよね。

単純に grep してしまうと、リクエスト URL には該当パラメータがないのに、リファラーに存在するために引っ掛かってしまうこともよくあります。

そこで、awk で特定のカラムに該当文字列が存在するかどうかを判定させたいと思います。

もし、ログ全体($0)が不要であれば、awk でカラムを特定してから grep してもいいのですが、全体が欲しい場合は特定のカラムに対して条件判定を入れます。

ここでは、リクエスト URL の最初のパラメータに param、値に hoge_ から始まる文字列があると前提条件を置いておきます。

awk -F' ' '($7 ~ /?param=hoge_/)' access_log

まあ、こういったメモ的なものは残しておくと数年後にも役に立ったりするので、忘れないうちに書き残しておきたいと思います。

Web API The Good Parts

オライリーの「Web API」に特化した本です。最近の多くの Web サービスは API が活用されていますが、その技術はこれまでの Web サイトとそれほど大きく変わりません。

今後、マイクロサービス化が進む中で知っておいて損はない内容が詰め込まれており、現場のエンジニアやこれから Web 系のエンジニアを目指す人にもオススメの一冊です。

created by Rinker
¥2,376
(2018/09/21 11:58:20時点 Amazon調べ-詳細)

あなたにオススメ