【大阪 / 横浜】インフラ / サーバーサイドエンジニア募集中!

【大阪 / 横浜】インフラ / サーバーサイドエンジニア募集中!

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

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

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【WordPress 専用】クラウドサーバー『ウェブスピード』

【WordPress 専用】クラウドサーバー『ウェブスピード』

【格安】Webサイト セキュリティ自動診断「クイックスキャナー」

【格安】Webサイト セキュリティ自動診断「クイックスキャナー」

【予約システム開発】EDISONE カスタマイズ開発サービス

【予約システム開発】EDISONE カスタマイズ開発サービス

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

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

【200ヶ国以上に対応】グローバル eSIM「ビヨンドSIM」

【200ヶ国以上に対応】グローバル eSIM「ビヨンドSIM」

【中国への旅行・出張・駐在なら】中国SIMサービス「チョコSIM」

【中国への旅行・出張・駐在なら】中国SIMサービス「チョコSIM」

【グローバル専用サービス】北米・中国でも、ビヨンドのMSP

【グローバル専用サービス】北米・中国でも、ビヨンドのMSP

【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とほかのコマンドと併せて日々の運用に役立てると運用の効率化ができると思います。

    この記事がお役に立てば【 いいね 】のご協力をお願いいたします!
    1
    読み込み中...
    1 票, 平均: 1.00 / 11
    680
    X facebook はてなブックマーク pocket
【2024.6.30 CentOS サポート終了】CentOS サーバー移行ソリューション

【2024.6.30 CentOS サポート終了】CentOS サーバー移行ソリューション

【2025.6.30 Amazon Linux 2 サポート終了】Amazon Linux サーバー移行ソリューション

【2025.6.30 Amazon Linux 2 サポート終了】Amazon Linux サーバー移行ソリューション

【大阪 / 横浜】インフラエンジニア・サーバーサイドエンジニア 積極採用中!

【大阪 / 横浜】インフラエンジニア・サーバーサイドエンジニア 積極採用中!

この記事をかいた人

About the author

岡崎潤一郎

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

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

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