awk split 文字列分割 使い方

バイオインフォ道場、くまぞうです。

awkには便利な関数が準備されています。その中の1つsplitは、セパレータを指定して文字列を分割することができます。

スポンサーリンク



awk コマンド split

awkスクリプトで、文字列を分割するには、splitが便利です。セパレータを指定して文字列を分割することができます。

関連記事
awk if 三項演算子 条件文の使い方
awk for 繰り返し処理
awk 配列 使い方

人気記事
awk 区切り文字とフィールド
awk パターンとアクション
awk よく使うシステム変数と使い方

awk split 書式

stringsは分割対象となる文字列、arrayは分割後のデータ格納先、separaterは区切り文字です(デフォルトはFS)。分割後の数がnに格納されます。分割後のデータには、array[index]でアクセス可能です。

n = split(strings, array, separater)

awk split 使い方

ファイルを読み込み、各行データをsplitを使って指定の区切り文字で分割します。分割後のデータにインデックスを使ってアクセスして表示します。

awk_split1.dat

カンマ区切りのテキストデータを準備します。

$cat awk_split1.dat
# header
111,222,333
444,555,666
777,888,999

awk_split1.awk

ファイルの行を,(カンマ)で分割し、分割された文字列の先頭(1番目)と最後(3番目、nでアクセス)を表示します。

!/^#/ {
    n = split($0, array, ",")
    print(array[1], array[n])
}
$ awk -f awk_split1.awk awk_split1.dat
111 333
444 666
777 999

awk_split2.awk

ファイルの行を,(カンマ)で分割し、for分を使って分割後の文字列にアクセスして表示します。また、分割数(n)をチェックして、データの連結文字を調整しています。

!/^#/ {
    n = split($0, array, ",")

    for (x in array) {
	if (x != n)
	    printf("%s - ", array[x])
	else
	    printf("%s", array[x])
    }
    printf("\n")
    
}
$ awk -f awk_split2.awk awk_split1.dat
111 - 222 - 333
444 - 555 - 666
777 - 888 - 999
スポンサーリンク



One thought to “awk split 文字列分割 使い方”

コメントは受け付けていません。