クリップボードにコピーしました!
文字列のawk

awkのsplit関数の使い方を初心者向けにわかりやすく解説

updated: 2026/05/14 created: 2026/05/14

はじめに

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',' 入力データの区切り文字を,として指定
print 指定した要素を出力

解説

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分割など基本的な処理から試し、少しずつ応用パターンへ広げていくのがおすすめです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

©︎ 2025-2026 running terminal commands