9cubed
ブログ | Tailwind | Vite | Python | MariaDB | Node.js | Linux | PowerShell | Docker | Git | その他 | 将棋ウォーズ | 歌の練習
次の記事 >

Rocky Linux のインストール

Linux

[Linux]awk(オーク)の使い方について

公開日:2026-01-14
更新日:2026-01-14

1. 概要

awk(オーク)は、テキストの加工や抽出を行うためのスクリプト言語です。

コマンドとして実行する場合は、次のような形式で書きます。
コマンド
awk 'パターン { アクション }' ファイル名
「パターン { アクション } 」が、awkプログラムです。

2. 動作確認

2.1 テストデータ

ls -al の実行結果をファイル出力したものを使用します。
コマンド
cd /
ls -al > ~/filelist.txt

cat ~/filelist.txt
実行結果
合計 24
dr-xr-xr-x.  18 root root  235 10月  9 21:45 .
dr-xr-xr-x.  18 root root  235 10月  9 21:45 ..
dr-xr-xr-x.   2 root root    6 10月 29  2024 afs
lrwxrwxrwx.   1 root root    7 10月 29  2024 bin -> usr/bin
dr-xr-xr-x.   5 root root 4096 10月 10 08:36 boot
drwxr-xr-x.  20 root root 3280  1月 14 09:18 dev
drwxr-xr-x.  90 root root 8192  1月 14 09:18 etc
drwxr-xr-x.   3 root root   19 10月  9 21:46 home
lrwxrwxrwx.   1 root root    7 10月 29  2024 lib -> usr/lib
lrwxrwxrwx.   1 root root    9 10月 29  2024 lib64 -> usr/lib64
drwxr-xr-x.   2 root root    6 10月 29  2024 media
drwxr-xr-x.   2 root root    6 10月 29  2024 mnt
drwxr-xr-x.   4 root root   36 10月 13 10:18 opt
dr-xr-xr-x. 188 root root    0  1月 14 09:18 proc
dr-xr-x---.   4 root root  141 10月 20 09:00 root
drwxr-xr-x.  34 root root  960  1月 14 09:19 run
lrwxrwxrwx.   1 root root    8 10月 29  2024 sbin -> usr/sbin
drwxr-xr-x.   2 root root    6 10月 29  2024 srv
dr-xr-xr-x.  13 root root    0  1月 14 09:18 sys
drwxrwxrwt.  10 root root 4096  1月 14 14:42 tmp
drwxr-xr-x.  12 root root  144 10月  9 21:45 usr
drwxr-xr-x.  20 root root 4096 10月  9 22:20 var

2.2 指定した列の取得

9列目の取得。$1 は 1 列目、$9 は 9列目。$0 は、全ての列を指す。
コマンド
awk '{ print $9 }' ~/filelist.txt
実行結果

.
..
afs
bin
boot
dev
etc
home
lib
lib64
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var

2.3 条件で絞り込む

ファイルサイズ( 5 列目)が 1000 バイト以上のファイル名( 9 列目)を出力する。
コマンド
awk '$5 >= 1000 { print $9, $5 }' ~/filelist.txt
実行結果
boot 4096
dev 3280
etc 8192
tmp 4096
var 4096

2.4 最初と最後に処理を実行する

コマンド
awk 'BEGIN { print "開始" } $5 >= 1000 { print $9, $5 } END { print "終了" }' ~/filelist.txt
実行結果
開始
boot 4096
dev 3280
etc 8192
tmp 4096
var 4096
終了
BEGIN { 処理 } で最初に実行する処理、END { 処理 } で最後に実行する処理を書けます。
BEGIN と END は大文字にすること。
絞り込みの条件は、BEGIN の後ろに書きます。

2.5 変数を使う

コマンド
awk -v COUNT=1 '$5 >= 1000 { print COUNT, $9, $5; COUNT++ }' ~/filelist.txt

または

awk 'BEGIN { COUNT=1 } $5 >= 1000 { print COUNT, $9, $5; COUNT++ }' ~/filelist.txt
実行結果
1 boot 4096
2 dev 3280
3 etc 8192
4 tmp 4096
5 var 4096
変数を awk プログラムの外で初期化する場合「-v 変数=値」とします。
複数初期化する場合は、「-v 変数=値 -v 変数=値」のように、変数ごとに -v を付けます。
また、BEGIN { } でも初期化できます。

2.6 パイプで値を渡す

echo の出力をスペースで分割して 4 列目を出力する。
コマンド
echo 'This is a pen.' | awk '{ print $4 }'
実行結果
pen.

1 から 5 の連番を出力
コマンド
seq 1 5 | awk '{ print $0 }'
実行結果
1
2
3
4
5

2.7 標準出力の値を変数に入れる

コマンド
echo 'Hello' | awk -v S="$(echo 'World')" '{print $0, S }'
実行結果
Hello World
S="$(echo 'World')" は、echo の標準出力の値をその場に展開して、S に代入します。

UNIXタイムスタンプ(1970/01/01 からの秒数)を変数に代入します。
コマンド
echo 'UnixTime' | awk -v S=$(date +%s) '{print $0, S }'
実行結果
UnixTime 1768399302
date +%s は、UNIXタイムスタンプを標準出力に出力します。それを $( ) でその場に展開して、S に代入しています。

2.8 CSVファイルの作成

MariaDB のテストデータの CSV ファイルを作成します。
コマンド
seq 1 100 | awk -v srand_seed="$(date +%s)" '
BEGIN { srand(srand_seed) }
{
    title = "記事 " $1
    status = int(rand()*20)+1
    category = int(rand()*20)+1
    print title "," status "," category
}' > articles_data.csv
実行結果
記事 1,13,2
記事 2,18,16
記事 3,16,8
記事 4,16,11
記事 5,6,5
     :
     :

説明
コマンド
seq 1 100
1 から 10000 の連番を1行ごとに出力して、それを awk に渡す。

コマンド
awk -v srand_seed="$(date +%s)" '
変数 srand_seed に、date +%s で出力された UNIXタイムスタンプを代入する。

コマンド
BEGIN { srand(srand_seed) }
UNIXタイムスタンプを乱数の種として設定する。

コマンド
'{
    title = "記事 " $1
    status = int(rand()*20)+1
    category = int(rand()*20)+1
    print title "," status "," category
}'
title = "記事 " $1 の $1 には、seq 1 100 の連番( 1 列目)が入っている。
int(rand()*20)+1 で 1 から 20 の乱数を生成して変数に設定する。
print で title、status、category をカンマ区切りで出力する。

コマンド
> articles_data.csv
awk の出力内容を CSV ファイルとして出力する。
次の記事 >

Rocky Linux のインストール

YouTube X

新着一覧

  • テーブル結合(CROSS JOIN、INNER JOIN、LEFT JOIN)MariaDB
  • 楽観ロック・悲観ロックMariaDB
  • カレントリードMariaDB
  • インデックスMariaDB
  • 論理削除(ソフトデリート)MariaDB
  • awk(オーク)の使い方についてLinux
  • NOT NULL 制約と NULL を許容した時の動作MariaDB
  • 外部キー制約MariaDB
  • MySQL と MariaDB の関係MariaDB
  • Docker で PostgreSQL のコンテナの使用Linux

アーカイブ

  • 2026/01
  • 2025/12
  • 2025/11
  • 2025/10
  • 2025/09
  • 2025/08
  • /00

以前のカテゴリー一覧

  • CakePHP3
  • CentOS7
  • HTML・CSS・JavaScript
  • Haskell
  • JavaScript
  • Kotlin
  • Laravel5
  • PHP
  • Python
  • Ruby
  • RubyOnRails5
  • TypeScript
  • Vue.js
  • Webサーバ講座
  • Webプログラミング講座
  • jQuery
  • linux
  • パソコン講座
  • ブログ
  • プログラミング講座
  • メモ帳作成講座
  • 数学

Copyright © 9cubed. All Rights Reserved.

プライバシーポリシー 利用規約
▲