awkのsubstr()で文字列の切り出し位置が文字数で特定できない場合には、index()関数と組み合わせると便利です。

スポンサーリンク

index()関数の使い方

下記の形式でindex()を書きます。

対象文字列を先頭から検索し、検索文字列が検出された最初の位置を戻り値として返します。

index(対象文字列, 検索文字列)

例えば、1フィールド(列)目の文字列を先頭から検索して、”0″の文字列の検出位置を特定したい場合は下記のように書きます。

substr()とindex()を組み合わせる方法をよく使います。

下記にサンプルコードも合わせてご紹介したいと思います。

スポンサーリンク

substr()とindex()を組み合わせる方法

更に、”0″の文字列を検出した最初の位置から3文字分だけ切り出したい場合は、下記のように書くことができます。

サンプルコード

サンプルコードになります。
in.txtの中身は下記のようだったとして、1フィールド(列)目の番号のみを切り出したいとします。
ここでは、1フィールド(列)目の番号の周りには、不必要な文字列があると仮定しています。

in.txtに下記の前提条件があるとすれば
1.番号の先頭が必ず”0″から開始される
2.番号は三桁
下記のように、”0″の文字列を検出した最初の位置から3文字分だけ切り出せば良いことになります。

実行すると、下記のように番号のみ切り出されます。

スポンサーリンク