【導入実績300社以上】AWS 構築・運用保守サービス

【導入実績300社以上】AWS 構築・運用保守サービス

【サーバー管理不要】WordPress専用クラウド『WebSpeed』

【サーバー管理不要】WordPress専用クラウド『WebSpeed』

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【コミュニケーションアプリ開発】LINE アプリ開発サービス

【コミュニケーションアプリ開発】LINE アプリ開発サービス

【ECサイト構築】Shopify カスタムアプリ開発サービス

【ECサイト構築】Shopify カスタムアプリ開発サービス

【音声アプリ開発】Twilio アプリ開発サービス

【音声アプリ開発】Twilio アプリ開発サービス

【グローバル対応】北米リージョン・クラウド / サーバー サポート

【グローバル対応】北米リージョン・クラウド / サーバー サポート

【CPU】AMD EPYC 技術検証(PoC)サービス

【CPU】AMD EPYC 技術検証(PoC)サービス

【Webシステム / サービス開発】SAKARAKU Lab(セカラクラボ)

【Webシステム / サービス開発】SAKARAKU Lab(セカラクラボ)

【取材記事】サーバー系企業ビヨンドが サーバーサイドエンジニアを募集中

【取材記事】サーバー系企業ビヨンドが サーバーサイドエンジニアを募集中

【対談記事】「やっぱクラウド移設っていいですよね」マイネット × ビヨンド エンジニア対談

【対談記事】「やっぱクラウド移設っていいですよね」マイネット × ビヨンド エンジニア対談

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

awkコマンドの使い方について

どうもこんにちは。
システムソリューション部の岡崎です。
今回はログの確認の際に併せて使うコマンドawkについて記入します。

awkコマンドとは

スペースや特定の文字で区切られた複数行のデータを処理する際に
特定の列のデータのみ出力したり、合計値を出したりできるコマンドです。

awk '{print$[出力したい列数];}'

例えば、以下のようなファイルがあります。

test.txt
1 2 3 5
1 2 3 6
1 2 3 7
1 2 3 8

1列目のみ表示したい場合は以下のようにすることで出力することができる。

cat test.txt | awk '{print$1;}'
1
1
1
1

使い方について

任意の文字を区切り文字として使用する場合

awk -F [区切り文字] '{print$1;}'
  • 使用例
  • 2列目のみ表示

    sed -e 's/ /:/g' test.txt | awk -F ':' '{print$2;}'
    2
    2
    2
    2
    

    行番号を出力する場合

    awk '{print NR $1;}'
    
  • 使用例
  • 3列目のみ表示

    sed -e 's/ /:/g' test.txt | awk -F ':' '{print NR $3;}'
    13
    23
    33
    43
    

    ただこれだとわかりずらいので以下のようにする

    sed -e 's/ /:/g' test.txt | awk -F ':' '{print NR " " $3;}'
    1 3
    2 3
    3 3
    4 3
    

    特定の列が特定の文字列となっている行を出力する場合

    awk '$1==[任意の文字]'
    
  • 使用例
  • 4行目が5のみ表示

    sed -e 's/ /:/g' test.txt | awk -F ':' '$4=="5" {print NR " " $4;}'
    1 5
    

    逆の場合は

    sed -e 's/ /:/g' test.txt | awk -F ':' '$4!="5" {print NR " " $4;}'
    2 6
    3 7
    4 8
    

    特定の列の数字を合計する場合

    awk '{sum+=$1;}END{print sum;}'
    
  • 使用例
  • 1行目の合計を表示

    sed -e 's/ /:/g' test.txt | awk -F ':' '{sum+=$1;}END{print sum;}'
    4
    

    平均値の場合は

    sed -e 's/ /:/g' test.txt | awk -F ':' '{sum+=$1;}END{print sum/NR;}'
    1
    

    まとめ

    運用にてログファイルを開くことはかなり多いと思いますが
    ファイルを整形して開くとより見やすくなり、
    エラーやアクセスの集計などかなり効率的に行えると思います。
    今回のawkとほかのコマンドと併せて日々の運用に役立てると運用の効率化ができると思います。

    この記事がお役に立てば【 いいね 】のご協力をお願いいたします!
    0
    読み込み中...
    0 票, 平均: 0.00 / 10
    237
    facebook twitter はてなブックマーク

この記事をかいた人

About the author

岡崎潤一郎

スマートフォン向けゲームの移設及び運用経験豊富。

日々、マルチクラウドの運用、サーバ構築・移設をこなす。案件数が増えてきたことから業務の効率を思案中。各クラウドの良さを踏まえてサーバ移設の方法などを思考することが多い。

クラウド間や物理からクラウドなどの移設を実施しているうちに、日本MSP協会が開催しているコンペで二連覇を達成。