スポンサーリンク
substr()の使い方
※awkの使い方をまとめて一覧にしました。
参考:awk入門-使い方まとめ一覧-
参考:awk入門-使い方まとめ一覧-
下記の形式でsubstr()を使います。
文字列StrのN文字目からL文字切り出して、substr()の戻り値として返します。
awkは0オリジンではなく、先頭の開始文字は1文字目となることに注意が必要です。
substr(Str:対象文字列, N:切り出し開始位置, L:切り出す文字列の長さ)
例えば、1フィールド(列)目の3文字目から3文字切り出したいときには、下記のように書きます。
変数numに、切り出した結果が格納されます。
num = substr( $1, 3, 3)
サンプルコード
サンプルコードです。
in.txtの中身は下記のようになっています。1フィールド(列)目の"id"と"="の文字列が、データ解析などの用途によっては不要の場合があります。
その場合、真ん中の数字のみを切り出す必要があります。
$ cat in.txt id001= A id002= B id003= C
その場合、1フィールド(列)目の3文字目から3文字切り出すことで、必要な文字列が抽出できます。
$ cat sample.awk #!/bin/sh cat in.txt | awk ' { num = substr( $1, 3, 3) print num , $2 } '
実行すると、下記のように真ん中の数字のみが切り出されてprint出力されています。
1フィールド(列)目の"id"と"="の文字列が取り除がれているのが確認できます。
$ ./sample.awk 001 A 002 B 003 C
スポンサーリンク
index()を使って切り出し開始位置を文字で指定する
substr()は切り出し開始位置を先頭からの文字数で指定します。
index()を組み合わせて使うことで、切り出し開始位置を文字で指定することができるようになります。
例えば、”0″の文字列を検出した最初の位置から3文字分だけ切り出したい場合は、下記のように書くことができます。
index()は、対象文字列を先頭から検索し、検索文字列が検出された最初の位置を戻り値として返します。
num = substr( $1, index( $1, "0" ), 3)
index()とsubstr()を組み合わせて使う方法については、下記の記事を書いています
よろしければ参考にしてください。
参考:awkでsubstr()の切り出し開始位置をindex()で指定する方法
スポンサーリンク