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.