スポンサーリンク

awkのmatch()関数の使い方

下記の形式でmatch()を書きます。
対象文字列を先頭から検索し、検索対象が検出された最初の位置を戻り値として返します。

match(対象文字列, 検索対象)
※検索対象は正規表現で指定できる。

スポンサーリンク

match()関数の戻り値

awkのmatch()関数の戻り値は、検索対象が検出された最初の位置を戻り値として返します。
例えば、下記のようにin.txtがあったとします。

下記のように、match()関数で”1″が検出された最初の位置をprint出力します。

下記が実行結果となります。”1″が登場した最初の位置が出力できています。

match()関数の検索対象は正規表現で指定できる

awkのmatch()関数は、正規表現で検索対象を指定できます。
例えば、下記のようにin.txtがあったとします。

検索対象には正規表現で、/[1-9]/ と指定し、1~9の数字が検出された最初の位置をprint出力します。

下記が実行結果となります。1~9の数字が検出された最初の位置をprint出力されているのが確認できます。

match()関数を使うと組み込み変数に値が設定される

awkには、RSTART と RLENGTH の組み込み変数が用意されています。
match()関数を実行すると、
RSTARTには、検索対象が検出された最初の位置が、
RLENGTHには、検索対象が検索された文字列の長さが格納されます。

例えば、下記のようにin.txtがあったとします。

RSTARTとRLENGTHを下記のようにセットします。

下記が実行結果です。

match()関数とsubstr()関数で文字列を切り出す

awkのmatch()関数で指定した検索対象を、substr()で切り出すこともできます。
先述のRSTARTとRLENGTHの組み込み変数を使います。

例えば、下記のようにin.txtがあったとします。

substr()にRSTART/RLENGTHを下記のようにセットします。

下記が実行結果になります。

スポンサーリンク