はじめに
awkのsplit関数は、文字列を指定した区切り文字で分割し、配列へ格納できる便利な機能です。
ログ解析やCSV処理、設定ファイルの確認など幅広い場面で活用できます。
本記事では、awkのsplit関数の基本から実践的な活用方法まで、初学者がつまずきやすいポイントを交えながら解説します。
参考:GNU awk
awkのsplit関数で文字列を分割する基本的な書き方
ファイル作成
cat << 'EOF' > input.txt
apple,orange,banana
EOF
実行コマンド
awk '{
split($0, fruits, ",")
print fruits[1]
print fruits[2]
print fruits[3]
}' input.txt
実行結果
apple
orange
banana
仕組み
| 項目 | 内容 |
|---|---|
| splitの役割 | 文字列を区切り文字で分割する |
| 第1引数 | 分割対象の文字列 |
| 第2引数 | 分割後の値を格納する配列 |
| 第3引数 | 区切り文字 |
| 配列参照 | fruits[1] のように取得する |
解説
awk の split 関数を使うことで、CSV形式のような文字列を簡単に分割できます。
配列に格納されるため、ループ処理との組み合わせにも便利です。
awkのsplit関数で分割結果を配列に格納する方法
ファイル作成
cat << 'EOF' > input.txt
apple,banana,orange
EOF
実行コマンド
awk '{
n = split($0, fruits, ",")
for (i = 1; i <= n; i++) {
print "fruits[" i "] = " fruits[i]
}
}' input.txt
実行結果
fruits[1] = apple
fruits[2] = banana
fruits[3] = orange
仕組み
| 項目 | 内容 |
|---|---|
| split関数 | 文字列を指定した区切り文字で分割する |
| 第1引数 | 分割対象の文字列 ($0) |
| 第2引数 | 分割結果を格納する配列 (fruits) |
| 第3引数 | 区切り文字 (",") |
| 戻り値 | 分割された要素数 (n) |
解説
awk の split 関数を使うと、文字列を簡単に配列へ格納できます。
CSV形式やログ解析など、区切り文字ごとのデータ処理でよく利用されます。
awkのsplit関数の戻り値を活用する方法
ファイル作成
cat << 'EOF' > input.txt
apple orange banana grape
EOF
実行コマンド
awk '{
count = split($0, fruits, " ")
print "要素数:", count
for (i = 1; i <= count; i++) {
print i ":" fruits[i]
}
}' input.txt
実行結果
要素数: 4
1:apple
2:orange
3:banana
4:grape
仕組み
| 項目 | 内容 |
|---|---|
| split関数 | 文字列を区切り文字で分割する |
| 戻り値 | 分割された要素数を返す |
| fruits配列 | 分割後の値を格納する配列 |
| " " | スペース区切りで分割 |
| count変数 | splitの戻り値を保持 |
解説
split の戻り値を使うことで、配列の要素数を正確に取得できます。
ループ処理と組み合わせると、分割したデータを柔軟に扱えます。
awkのsplit関数で第3引数を省略した場合の動作
ファイル作成
cat << 'EOF' > input.txt
apple orange grape
dog cat mouse
red blue green
EOF
実行コマンド
awk '{
n = split($0, arr)
printf "分割数=%d ", n
for (i = 1; i <= n; i++) {
printf "[%s] ", arr[i]
}
print ""
}' input.txt
実行結果
分割数=3 [apple] [orange] [grape]
分割数=3 [dog] [cat] [mouse]
分割数=3 [red] [blue] [green]
仕組み
| 項目 | 内容 |
|---|---|
| 関数 | split(文字列, 配列) |
| 第3引数省略時 | FS の値を区切り文字として使用 |
| 今回のFS | デフォルトの空白文字 |
| 戻り値 | 分割された要素数 |
| 格納先 | arr[1] から順番に格納 |
解説
split の第3引数を省略すると、awkのフィールド区切り文字 FS が自動的に利用されます。
デフォルトでは空白・タブ連続を区切りとして文字列を分割します。
awkのsplit関数でスペース区切りの文字列を分割する方法
ファイル作成
cat << 'EOF' > input.txt
apple orange grape
EOF
実行コマンド
awk '{
split($0, arr, " ")
print arr[1]
print arr[2]
print arr[3]
}' input.txt
実行結果
apple
orange
grape
仕組み
| 項目 | 内容 |
|---|---|
| split関数 | split($0, arr, " ") |
| $0 | 1行全体の文字列 |
| arr | 分割後の値を格納する配列 |
| " " | スペース区切りで分割 |
解説
awk の split 関数を使うことで、スペース区切りの文字列を簡単に配列へ分割できます。
分割後は arr[1] のように配列番号で各要素へアクセスできます。
awkのsplit関数でカンマ区切りCSVを分割する方法
ファイル作成
cat << 'EOF' > input.txt
name,age,city
Alice,25,Tokyo
Bob,30,Osaka
Charlie,22,Nagoya
EOF
実行コマンド
awk -F',' '{
split($0, data, ",")
print "名前=" data[1] ", 年齢=" data[2] ", 都市=" data[3]
}' input.txt
実行結果
名前=name, 年齢=age, 都市=city
名前=Alice, 年齢=25, 都市=Tokyo
名前=Bob, 年齢=30, 都市=Osaka
名前=Charlie, 年齢=22, 都市=Nagoya
仕組み
| 項目 | 内容 |
|---|---|
| 区切り文字指定 | -F',' でCSVの区切り文字をカンマに設定 |
| split関数 | split($0, data, ",") |
| $0 | 行全体を表す |
| data[1] | 1列目の値 |
| data[2] | 2列目の値 |
| data[3] | 3列目の値 |
解説
awk split を使うと、CSVの各列を配列として扱えます。
カンマ区切りデータの加工や抽出を簡潔に記述できるのが特徴です。
awkのsplit関数でタブ区切りデータを分割する方法
ファイル作成
cat << 'EOF' > input.txt
id name score
1 Alice 80
2 Bob 92
3 Carol 75
EOF
実行コマンド
awk '{
split($0, data, "\t")
print "ID=" data[1] ", NAME=" data[2] ", SCORE=" data[3]
}' input.txt
実行結果
ID=id, NAME=name, SCORE=score
ID=1, NAME=Alice, SCORE=80
ID=2, NAME=Bob, SCORE=92
ID=3, NAME=Carol, SCORE=75
仕組み
| 項目 | 内容 |
|---|---|
| 実行可能なコマンド | split($0, data, "\t") |
| $0 | 行全体を表す |
| data | 分割後の値を格納する配列 |
| "\t" | タブ区切りを指定 |
| data[1] | 1列目の値 |
| data[2] | 2列目の値 |
| data[3] | 3列目の値 |
解説
awkのsplit関数を使うことで、タブ区切りデータを簡単に配列へ分割できます。
awk splitはTSVファイルやログデータ解析で頻繁に利用されます。
awkのsplit関数で複数の区切り文字を使って分割する方法
ファイル作成
cat << 'EOF' > input.txt
apple,orange;grape
EOF
実行コマンド
awk '
{
split($0, arr, /[,;]/)
for (i = 1; i <= length(arr); i++) {
print arr[i]
}
}
' input.txt
実行結果
apple
orange
grape
仕組み
| 項目 | 内容 |
|---|---|
| split関数 | 文字列を配列へ分割する |
| 第1引数 | 分割対象の文字列 |
| 第2引数 | 分割後を格納する配列 |
| 第3引数 | 区切り文字の正規表現 |
| [,;] | , ; のいずれかで分割 |
| arr[i] | 分割された各要素を取得 |
解説
split の第3引数に正規表現を指定することで、複数の区切り文字をまとめて扱えます。
awk split を使うとCSVやログデータの加工を効率よく行えます。
awkのsplit関数で正規表現を使って文字列を分割する方法
ファイル作成
cat << 'EOF' > input.txt
apple,,orange;;;grape:melon
EOF
実行コマンド
awk '{
n = split($0, arr, /[,;:]+/)
for (i = 1; i <= n; i++) {
print arr[i]
}
}' input.txt
実行結果
apple
orange
grape
melon
仕組み
| 項目 | 内容 |
|---|---|
| splitの役割 | split()で文字列を配列に分割 |
| 正規表現 | /[,;:]+/ で , ; : をまとめて区切り文字に指定 |
| + の意味 | 区切り文字が連続していても1つとして扱う |
| 配列格納 | 分割後の値は arr[1] から順番に入る |
| 戻り値 | split() は分割した要素数を返す |
解説
awkのsplitでは、第3引数に正規表現を指定することで柔軟な文字列分割が可能です。
複数種類の区切り文字をまとめて処理できるため、ログ解析やCSV加工で便利です。
awkのsplit関数で配列をループ処理する方法
ファイル作成
cat << 'EOF' > input.txt
apple,banana,orange
EOF
実行コマンド
awk '{
n = split($0, fruits, ",")
for (i = 1; i <= n; i++) {
print "fruits[" i "] = " fruits[i]
}
}' input.txt
実行結果
fruits[1] = apple
fruits[2] = banana
fruits[3] = orange
仕組み
| 項目 | 内容 |
|---|---|
| split関数 | 文字列を区切り文字で分割して配列へ格納 |
| 第1引数 | 分割対象の文字列 |
| 第2引数 | 格納先の配列 |
| 第3引数 | 区切り文字 |
| 戻り値 | 分割された要素数 |
| ループ処理 | for文で1から要素数まで繰り返し |
解説
awk の split 関数を使うことで、文字列を簡単に配列化できます。
戻り値の要素数を利用すると、配列を安全にループ処理できます。
awkのsplit関数とfor文を組み合わせる方法
ファイル作成
cat << 'EOF' > input.txt
apple,banana,orange
grape,melon,peach
EOF
実行コマンド
awk '{
n = split($0, fruits, ",")
for (i = 1; i <= n; i++) {
print "要素" i ":" fruits[i]
}
}' input.txt
実行結果
要素1:apple
要素2:banana
要素3:orange
要素1:grape
要素2:melon
要素3:peach
仕組み
| 項目 | 内容 |
|---|---|
| split関数 | 文字列を分割して配列へ格納する |
| 戻り値 n | 分割された要素数を返す |
| $0 | 入力行全体を表す |
| fruits | splitで生成される配列 |
| for (i = 1; i <= n; i++) | 要素数分だけ順番に繰り返す |
| fruits[i] | 配列内の値を取得する |
解説
split関数の戻り値を変数nへ格納することで、配列の要素数を正確に管理できます。
for文でnを利用すると、必要な回数だけ安全にループ処理を実行できます。
awkのsplit関数で特定の要素だけを取り出す方法
ファイル作成
cat << 'EOF' > input.txt
apple,banana,orange,grape
EOF
実行コマンド
awk -F',' '{
split($0, fruits, ",")
print fruits[2]
}' input.txt
実行結果
banana
仕組み
| 項目 | 内容 |
|---|---|
| split($0, fruits, ",") | 1行全体を,で分割して配列fruitsへ格納 |
| fruits[2] | 2番目の要素を取得 |
| -F',' | 入力データの区切り文字を,として指定 |
| 指定した要素を出力 |
解説
split関数を使うと、文字列を配列として扱えるため特定の要素だけ簡単に取得できます。CSV形式のデータ加工やログ解析でよく利用される便利な方法です。
awkのsplit関数でキーと値を分割する方法
ファイル作成
cat << 'EOF' > input.txt
name:Tanaka age:30 city:Tokyo
EOF
実行コマンド
awk '{
for (i = 1; i <= NF; i++) {
split($i, data, ":")
print "キー=" data[1] ", 値=" data[2]
}
}' input.txt
実行結果
キー=name, 値=Tanaka
キー=age, 値=30
キー=city, 値=Tokyo
仕組み
| 仕組み | 実行可能なコマンド |
|---|---|
| split($i, data, ":")で「:」区切りの文字列を分割 | split($i, data, ":") |
| data[1]にキー、data[2]に値を格納 | print data[1], data[2] |
| for文で各フィールドを順番に処理 | for (i = 1; i <= NF; i++) |
解説
awkのsplit関数を使うことで、区切り文字ごとに文字列を簡単に分割できます。
キーと値形式のデータ解析やログ処理でよく利用されます。
awkのsplit関数でCSVの特定列を再分割する方法
ファイル作成
cat << 'EOF' > input.txt
id,name,data
1,Alice,red|blue|green
2,Bob,yellow|white
3,Carol,black|pink|orange
EOF
実行コマンド
awk -F',' '{
split($3, arr, "|")
print $1, $2, arr[1], arr[2], arr[3]
}' input.txt
実行結果
id name data
1 Alice red blue green
2 Bob yellow white
3 Carol black pink orange
仕組み
| 項目 | 内容 |
|---|---|
| 区切り文字 | -F',' でCSVをカンマ区切りとして読み込む |
| split関数 | split($3, arr, "|") |
| 対象列 | $3 で3列目を指定 |
| 配列格納 | arr[1] arr[2] のように分割後を参照 |
解説
awk の split 関数を使うことで、CSVの特定列をさらに区切り文字で再分割できます。
配列へ格納されるため、必要な要素だけを柔軟に取り出せます。
awkのsplit関数とgsubを組み合わせた文字列加工の方法
ファイル作成
cat << 'EOF' > input.txt
apple,orange,banana
grape,,melon
lemon,lime
EOF
実行コマンド
awk '{
n = split($0, arr, ",")
for (i = 1; i <= n; i++) {
gsub(/^ +| +$/, "", arr[i])
if (arr[i] == "")
arr[i] = "EMPTY"
printf "[%s]", arr[i]
}
print ""
}' input.txt
実行結果
[apple][orange][banana]
[grape][EMPTY][melon]
[lemon][lime]
仕組み
| 処理 | 内容 |
|---|---|
| split($0, arr, ",") | カンマ区切りで文字列を配列へ分割 |
| gsub(/^ +| +$/, "", arr[i]) | 前後の空白を削除 |
| arr[i] == "" | 空文字を判定 |
| printf "[%s]", arr[i] | 加工後の文字列を整形出力 |
解説
splitで分割した要素をgsubで加工することで、柔軟な文字列処理が可能です。
CSV風データの整形やログ加工でよく利用されるテクニックです。
awkのsplit関数とsubstrを組み合わせる方法
ファイル作成
cat << 'EOF' > input.txt
apple,banana,grape
orange,melon,lemon
EOF
実行コマンド
awk -F',' '{
split($0, arr, ",")
print substr(arr[2], 1, 3)
}' input.txt
実行結果
ban
mel
仕組み
| 項目 | 内容 |
|---|---|
| split | 文字列を区切り文字 , で配列に分割する |
| arr[2] | 分割後の2番目の要素を取得する |
| substr | 文字列の一部を切り出す |
| substr(arr[2],1,3) | 2番目の要素の先頭から3文字を取得する |
解説
splitで分割した文字列をsubstrで加工すると、特定部分だけを柔軟に抽出できます。
CSV形式のテキスト処理やログ解析でよく使われる組み合わせです。
awkのsplit関数でログファイルを解析する方法
ファイル作成
cat << 'EOF' > input.txt
2026-05-14,INFO,user=alice,ip=192.168.1.10
2026-05-14,ERROR,user=bob,ip=192.168.1.20
2026-05-14,WARN,user=charlie,ip=192.168.1.30
EOF
実行コマンド
awk -F',' '{
split($3, user, "=")
split($4, ip, "=")
printf "USER:%s IP:%s STATUS:%s\n", user[2], ip[2], $2
}' input.txt
実行結果
USER:alice IP:192.168.1.10 STATUS:INFO
USER:bob IP:192.168.1.20 STATUS:ERROR
USER:charlie IP:192.168.1.30 STATUS:WARN
仕組み
| 仕組み | 実行可能なコマンド |
|---|---|
| -F','でカンマ区切りを指定 | awk -F',' '{print $1}' input.txt |
| split()で=区切りを配列へ格納 | awk -F',' '{split($3,a,"="); print a[2]}' input.txt |
| printfで整形して表示 | awk -F',' '{printf "%s %s\n",$2,$3}' input.txt |
解説
awkのsplitを使うことで、CSV形式のログでも柔軟に値を分解できます。
複数の区切り文字を組み合わせることで、実践的なログ解析を簡潔に実装できます。
awkのsplit関数で設定ファイルを解析する方法
ファイル作成
cat << 'EOF' > input.txt
server=app01
port=8080
timeout=30
log_level=debug
EOF
実行コマンド
awk -F= '{
split($0, config, "=")
printf "key=%s value=%s\n", config[1], config[2]
}' input.txt
実行結果
key=server value=app01
key=port value=8080
key=timeout value=30
key=log_level value=debug
仕組み
| 項目 | 内容 |
|---|---|
| -F= | = を区切り文字として設定 |
| split($0, config, "=") | 1行全体を = で分割して配列へ格納 |
| config[1] | キー名を取得 |
| config[2] | 値を取得 |
| printf | 整形して出力 |
解説
awk の split 関数を使うことで、設定ファイル形式のデータを簡単に解析できます。
キーと値を分離して扱えるため、ログ解析や環境変数チェックにも応用可能です。
awkのsplit関数で複数ファイルを一括処理する方法
ファイル作成
cat << 'EOF' > input.txt
sales_2024.csv:Tokyo,120,150,180
sales_2025.csv:Osaka,200,210,250
report_01.csv:Nagoya,90,100,110
EOF
ファイル作成
cat << 'EOF' > run.sh
awk -F ':' '
{
n = split($2, data, ",")
printf "ファイル: %s\n", $1
printf "分割数: %d\n", n
for (i = 1; i <= n; i++) {
printf " data[%d] = %s\n", i, data[i]
}
print ""
}
' input.txt
EOF
実行コマンド
chmod +x run.sh
./run.sh
実行結果
ファイル: sales_2024.csv
分割数: 4
data[1] = Tokyo
data[2] = 120
data[3] = 150
data[4] = 180
ファイル: sales_2025.csv
分割数: 4
data[1] = Osaka
data[2] = 200
data[3] = 210
data[4] = 250
ファイル: report_01.csv
分割数: 4
data[1] = Nagoya
data[2] = 90
data[3] = 100
data[4] = 110
仕組み
| 項目 | 内容 |
|---|---|
| split() | 文字列を分割して配列へ格納 |
| n = split(...) | 分割した要素数を取得 |
| for (i = 1; i <= n; i++) | 戻り値 n を利用して順番に処理 |
| data[i] | split後の配列要素 |
| 一括処理 | 複数データを連続処理可能 |
解説
awk split の戻り値を利用することで、配列数を正確に制御できます。
固定回数ではなく動的にループできるため、可変長データの処理に適しています。
awkのsplit関数を活用するポイントまとめ
awkのsplit関数は、文字列操作を効率化できる重要な機能です。
配列やfor文と組み合わせることで、CSVやログ、設定ファイルなど多様なデータを柔軟に処理できます。
特に、正規表現による分割やgsub・substrとの連携を覚えると、実務での活用範囲が大きく広がります。
まずはスペース区切りやCSV分割など基本的な処理から試し、少しずつ応用パターンへ広げていくのがおすすめです。
