更新履歴
- crontabファイルの場所はどこ?OS別の保存先パスと確認・編集方法を徹底解説
- 【pytest】特定のテストだけを実行する方法!ファイル・クラス・関数ごとに解説
- TeraTermのセッションが勝手に切れる原因と対策|タイムアウトを防ぐ設定ガイド
- WinMergeをインストール不要で使う!ポータブル版の導入手順とメリットを解説
- 【完全ガイド】WinMergeでバイナリ比較をする方法
- SwaggerとOpenAPIの違いを徹底解説!仕様とツールの関係性を理解する
- 【Python】ファイル存在チェックの実装方法(pathlib、os.path)
- Pythonで文字列を除去する方法を完全解説!strip・replace・正規表現
- スタック領域とヒープ領域の違いとは?メモリ管理から使い分けまで徹底解説
- Python Docstringの書き方完全ガイド|主要スタイルの比較と保守性を高める記述
- シングルトン(Singleton)デザインパターンを徹底解説!Java実装例・メリット・デメリット
- サインインとログインの違いとは?意味・使い分けをわかりやすく解説
- 静的サイトと動的サイトの違いを徹底比較!メリット・デメリットと選び方を解説
- モノリスとマイクロサービスの違いを比較|メリット・デメリットと選定基準
- RESTとSOAPの違いを徹底比較!特徴・メリット・使い分けを解説
- 同期・非同期とブロッキング・ノンブロッキングの違い|概念と使い分けを徹底比較
- マルチプロセスとマルチスレッドの違いを解説!メリット・デメリット・使い分け
- hostsファイルとDNSの違いとは?優先順位・仕組み・使い分けを解説
- Excelで複数行を1行にまとめる方法まとめ【関数・PQ対応】
- レスポンスタイムとターンアラウンドタイムの違い【基本情報対策】
お役立ちツール
Linuxユーザにお勧めの本
awkコマンドにprintを指定して、文字列を抽出することができます。
awkとは
sed や grep の高機能なツールとして開発されていて、簡単な行ベースのテキストファイルを処理することができるコマンドです。
行全体を抽出
以下コマンドでaccess.logの末尾3行を出力します。
awk '{ print $0 }' /var/log/nginx/access.log | tail -n 3printに$0を指定することで、以下のように行すべてが出力されます。
XXX.XXX.XXX.XXX - - [11/Sep/2024:11:39:42 +0000] "GET XXX HTTP/1.1" 200 20328 "https://it-life.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 Edg/128.0.0.0"XXX.XXX.XXX.XXX - - [11/Sep/2024:11:39:42 +0000] "GET XXX HTTP/1.1" 200 511 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 Edg/128.0.0.0"XXX.XXX.XXX.XXX - - [11/Sep/2024:11:39:43 +0000] "GET XXX HTTP/1.1" 200 243698 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 Edg/128.0.0.0"区切り(スペース)の4、5項目を抽出
以下コマンドで、aaccess.logの末尾3行のタイムスタンプを出力します。
awk '{ print $4,$5 }' /var/log/nginx/access.log | tail -n 3printに$4,$5のようにカンマ区切りで指定することで、スペース区切りの4,5項目が出力されます。
[11/Sep/2024:11:39:42 +0000][11/Sep/2024:11:39:42 +0000][11/Sep/2024:11:39:43 +0000]カンマ区切りの項目を抽出
以下ファイルを例に確認します。
$ cat sample.csvaaa,bbb,cccddd,eee,fffggg,hhh,iii以下コマンドで、CSVファイルの2列目を取得します。
awk -F'[,]' '{ print $2 }' sample.csv-Fに'[,]'を指定することで、区切り文字をカンマ「,」へ変えることができます。
以下のように、2列目が出力されることを確認しました。
bbbeeehhhまとめ
- printに以下組み込み変数を指定して、値を抽出することができる。
| 組み込み変数 | 説明 |
|---|---|
| $0 | レコード |
| $n | レコードのn番目のフィールド |
- -Fオプションを指定して、区切り文字を変更できる。(デフォルトはスペース)
余談
- awkは
オークと読みます。エー・ダブリュー・ケーではありません。 awkは、開発者の Alfred VainoAho(アルフレッド・エイホ)、Peter JayWeinberger(ピーター・ワインバーガー)、Brian WilsonKernighan(ブライアン・カーニハン)の3人の頭文字を取って名付けられました。
Linuxユーザにお勧めの本
以上で本記事の解説を終わります。
よいITライフを!