2010年6月7日月曜日

substr = 文字列の一部を取り出す - AWK

AWKの文字列操作関数と関連機能
○(文字数)Gawk on Windows ○(文字数)Gawk ○(バイト数)mawk32 ○(バイト数)Mawk ○(バイト数)awk
文字列の一部を取り出します。


**** 書式
--------
substr( 対象文字列, 取り出し開始位置 [, 取り出す長さ] )
--------

o 対象文字列
o 取り出し開始位置 -- 先頭は 1 です。
   + 文字を数える時の単位は、処理系によって異なります。詳細は、下の通りです。
   + 負の値を指定しても、文字列の後ろから数える事はしません。JavaScriptとは異なります。
o 取り出す長さ -- 省略する事も出来ます。
   + 文字を数える時の単位は、処理系によって異なります。詳細は、下の通りです。
o 戻り値 -- 取り出した文字列

o 文字を数える時の単位は、処理系によって異なります。
   + (漢字などの全角文字が混じっている場合、長さが変わります。)
   + Gawk系は、文字数で数えます。
      + Gawk on Windows 3.1.7
      + Gawk for Windows 3.1.6
   + その他は、バイト数で数えます。
      + mawk MBCS (32bit版) 1.3.3
      + Mawk for Windows 1.3.3
      + original = the one true awk(updated May 1, 2007)


**** 使用例
--------
BEGIN {
  print substr("ミクさん", 1); # ミクさん

  print substr("ミクさん", 1, 2); # ミク(or ミ)
  print substr("ミクさん", 3, 2); # さん(or ク)
  print substr(1.234, 1, 2); # 1.
}
--------

o 行末のセミコロンは、C言語の書き方に合わせました。無くても動きます。


**** 機能
o 1番目の引数に指定した文字列から、部分文字列を取り出します。
o 1番目の引数に数値を指定すると、その数値を文字列とみなして、実行します。
o 長さを省略すると、開始位置から文字列の最後までを取り出します。
o 長さに 0以下の値を指定すると、結果は空("")になります。

o 文字列の代わりに数値を指定すると、数値を文字列に変換してから使用します。
   + 長い整数を指定すると、最後の方の桁が0になったり、浮動小数点形式になります。
   + 実数を指定すると、6桁までに丸めたり、浮動小数点形式になります。
   + この動作は変える事も出来ます。詳しくは、「数値から文字列にする時に、実数を7桁以上表示させる方法

** 処理系に依存する動作
o 文字を数える時の単位は、処理系によって異なります。
   + 文字数で数える処理系
      + Gawk on Windows 3.1.7
      + Gawk for Windows 3.1.6
   + バイト数で数える処理系
      + mawk MBCS (32bit版) 1.3.3
      + Mawk for Windows 1.3.3
      + original = the one true awk(updated May 1, 2007)
o 開始位置に 0以下の値を指定して、長さも指定する場合、それなりに動くみたいです。
   + エラーメッセージは出ませんでした。


**** 確認した処理系
o Gawk on Windows 3.1.7
o Gawk for Windows 3.1.6
o mawk MBCS (32bit版) 1.3.3 -- バイト数で数える
o Mawk for Windows 1.3.3 -- バイト数で数える
o original = the one true awk(updated May 1, 2007) -- バイト数で数える


==
関連ページ:
    ▼AWKの文字列操作関数と関連機能▼ABC順
    ▼AWKプログラムを書く▼ABC順
    ▼AWK
    ▼制作メモ
    > int = 実数や文字列を整数化する
    strtonum = 10進数、8進数、16進数の文字列を数値に変換する
    split = 文字列を分割する
    +
    文字列から文字を1つずつ取り出す
    文字列を組み立てる
(2010年6月10日追加。数値を指定した時の動作)