何気に知らない人が多い、超便利な「awkコマンド」の使い方入門

Linuxを使っていると、シェルコマンドの奥深さに驚くことが多いですよね。そんな便利なコマンドの中でも、特に知っていると作業が格段に捗るのが「awk(オーク)コマンド」です。awkは一度慣れてしまうと、テキスト処理やログ分析、CSVファイルの簡単な加工まで幅広く対応できる、まさに神ツールなのですが、意外にも知名度がそれほど高くなく、使ったことがない人も多いんですよね。

この記事では、「awkコマンドとは何か?」というところから始め、具体的な利用シーンを踏まえて初心者の方にもわかりやすく、実践的な使い方まで丁寧に紹介していきます!

目次

awkコマンドとは?

awkは、テキストファイルを行ごとに読み込み、それを特定のパターンで処理するためのコマンドラインツールです。特にログやCSVファイルなど、大量のテキストデータを手軽に扱いたいときに便利です。

awkの基本構文は以下のようになります。

awk 'パターン { アクション }' ファイル名
  • パターン:処理したいデータの条件を指定
  • アクション:指定したパターンに一致する行に対して実行する処理

awkの基本的な使い方(具体例で解説!)

基本例:ファイルの内容を表示

例えば、シンプルにファイルの内容を表示するなら、

awk '{ print $0 }' ファイル名

これだけでOK。$0は現在の行全体を示しています。

特定のカラムだけ取り出したい

例えばスペース区切りのテキストファイルがあって、2列目だけ取り出したい時は、

awk '{ print $2 }' ファイル名

という風に使います。簡単ですよね!

awkで条件をつけて抽出

awkは条件指定が非常に得意です。例えば、あるログファイルから特定の単語を含む行だけ取り出したいときは、

awk '/エラー/ { print }' ファイル名

これだけで「エラー」という言葉が含まれている行だけを表示できます。

CSVファイルをawkで扱う

CSVを扱うのもawkなら簡単です。awkではデフォルトでスペース区切りですが、CSVならカンマで区切る必要があります。そのためには以下のようにします。

awk -F',' '{ print $1, $3 }' ファイル名.csv

これでCSVの1列目と3列目だけを表示できます。

awkで集計する

awkの真価が発揮されるのが集計処理です。例えば、アクセスログから特定のURLのアクセス数を集計したい場合、以下のようにします。

awk '{ count[$7]++ } END { for (url in count) print url, count[url] }' access.log

これだけで各URLのアクセス数を簡単に集計可能。簡潔かつパワフルですよね。

awkのスクリプトファイル化

awkコマンドは複雑になると一行で書くのは大変です。その場合はawkスクリプトとしてファイルに書き、実行します。

例えば以下の内容をscript.awkというファイルに書き込みます。

#!/usr/bin/awk -f
{ sum += $1 }
END { print "合計:", sum }

そして実行する時は

awk -f script.awk data.txt

これでdata.txtの1列目の合計値を簡単に計算してくれます。

awkを使う際のポイントと注意点

  • awkではフィールド(カラム)番号が1から始まる(0は行全体)ことに注意しましょう。
  • 文字列比較はダブルクオート(“”)を使います。
  • 正規表現も簡単に利用できるため、慣れればかなり柔軟なデータ処理が可能になります。

普段、1番目は0で慣れてるからな、、

awkで困ったら?

awkを使っていてわからないことがあれば、まずは公式ドキュメントやman awkコマンドでマニュアルを確認しましょう。また、ネットには便利なawkワンライナー(ワンライナ集とか)の例も多く掲載されているので、自分の使いたい用途に似たサンプルを参考にするとスキルアップが早くなります。

ワンライナーとは
処理を1行に全部詰め込んでるプログラムのこと

まとめ

awkは覚えてしまえば、ちょっとしたテキスト加工から複雑なログ解析まで非常に幅広く使えます。ぜひawkをマスターして、日常のLinux操作をもっと効率化してくださいね。

これを機にぜひawkをあなたのLinuxコマンドライン生活の「相棒」にしてみてください!

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次