文字列関数 (2)

文字列の加工を行う関数

scpt9_1.awk

#!/usr/local/bin/gawk -f
# scpt9_1.awk

BEGIN{
    # substr(str, beg, len)
    # str: 文字列...切り出しの対象になる元の文字列
    # beg: 整数値 (バイト単位)...切り出しの開始位置
    # len: 整数値 (バイト単位)...切り出す文字列の長さ
    # 返値: 文字列

    str = substr("programming", 4, 5)
    print "str = " str

    str = "内閣総理大臣"
    beg = 7
    len = 6
    str = substr(str, beg, len)
    print "str = " str

    # sub(r, s, str) と gsub(r, s, str)
    # sub(r, s, str)
    # r: 置換する元の部分文字列 (正規表現)
    # s: 新しい文字列
    # str: 全体の文字列
    # 返値: 整数値 (置換した回数だが, この場合は常に 1)

    # gsub(r, s, str)
    # r: 置換する元の部分文字列 (正規表現)
    # s: 新しい文字列
    # str: 全体の文字列
    # 返値: 整数値 (置換した回数)

    print "____ 最初に sub ____"
    str = "I have a cat and you have a cat."
    n = sub(/cat/, "dog", str) # /cat/ を "dog" に置換
    print n "回置換した"
    print "置換した結果: " str

    print "____ 次は gsub ____"
    str = "I have a cat and you have a cat"
    n = gsub(/cat/, "dog", str)
    print n "回置換した"
    print "置換した結果: " str

    # sub, gsub は, 最後の引数を省略すれば, 現在の入力行,
    # すなわち $0 において置換が行われるということも覚えておこう.

    original = "I love cats."
    print "substr 実行前の original = " original

    s = substr(original, 3, 4)
    print "substr 実行後の original = " original

    print "--------"
    print "sub 実行前の original = " original
    n = sub(/cat/, "dog", original)
    print "sub 実行後の original = " original
}

scpt9_1.awk の実行結果は:

[cactus:~/code_awk/tuts]% ./scpt9_1.awk
str = gramm
str = 総理
____ 最初に sub ____
1回置換した
置換した結果: I have a dog and you have a cat.
____ 次は gsub ____
2回置換した
置換した結果: I have a dog and you have a dog
substr 実行前の original = I love cats.
substr 実行後の original = I love cats.
--------
sub 実行前の original = I love cats.
sub 実行後の original = I love dogs.

Table Of Contents

Previous topic

文字列関数 (1)

Next topic

スクリプトの実行順序 (はじめに)