gsub = 文字列を置き換える - AWK
○Gawk on Windows ○Gawk ○mawk32 △(全角不可)Mawk △(全角不可)awk
文字列を置き換えます。見つかった所は、全部置き換えます。o 対象文字列を直接変更しますので、必要な時は、値をコピーしてから使います。
o 最初の1つだけを置き換えたい時は、「sub = 文字列を、最初の1つだけ置き換える」
**** 書式
--------
gsub( 置換する条件, 置換後の文字列 [, 対象文字列] )
--------
o 置換する条件 -- 正規表現で指定します。左右の/を付けます。例: /ミク/
o 置換後の文字列 -- こちらは、普通の文字列です。例: "Miku"
+ 但し、文字「&」(と「\」)について特例があります。
+ 「&」は正規表現で見つかった文字列に置き換えます。「&」に変換したい時は「\\&」を使います。
+ 「\」は、特殊文字を示す文字です。「\」に変換したい時は「\\」を使います。
o 対象文字列 -- 指定した文字列を直接変更します。省略すると、変数 $0を使います。
o 戻り値 -- 置換した数
o 文字列を指定する所は、数値も指定出来ます。
+ 6桁を超える数値を指定する時は、数値から文字列に自動変換する時の最大桁数を増やします。
+ (変数CONVFMTを使用)
o なお、全角文字を使うと、結果不正になる事のある処理系もありました。ご注意下さい。
+ Mawk for Windows 1.3.3
+ original = the one true awk(updated May 1, 2007)
**** 使用例
--------
BEGIN {
v = "ミクさん、みくさん、ミクさん。";
n = gsub(/ミク/, "Miku", v); # Mikuさん、みくさん、Mikuさん。
print v;
print n "個を置き換えました。";
v = "39.39139";
n = gsub(/39/, "ミク", v); # ミク.ミク1ミク
print v;
print n "個を置き換えました。";
v = 39.39139; # 数値の場合
n = gsub(/39/, "ミク", v); # ミク.ミク14
print v;
print n "個を置き換えました。";
}
{
n = gsub(/ミク/, "Miku"); # 対象文字列の指定が無い時は、$0を置換します。
print $0;
print n "個を置き換えました。";
}
--------
o 行末のセミコロンは、C言語の書き方に合わせました。無くても動きます。
**** 機能
o 指定した条件で、文字列や数値を置き換えます。
+ 但し、対象文字列の途中に改行コードが含まれていると、改行コード以降は置き換えないみたいです。
+ 少なくとも、正規表現の「^」(= チルダ)は文字列の先頭のみを置き換えます。
o 対象文字列を直接変更します。
o 対象文字列を省略すると、変数 $0を使います。
o 見つかった所を全部置き換えて、置き換えた数を返します。
o 但し、置き換えた文字列を更に検索する事はしません。
o 文字列の代わりに数値を指定すると、数値を文字列に変換してから使用します。
+ 長い整数を指定すると、最後の方の桁が0になったり、浮動小数点形式になります。
+ 実数を指定すると、6桁までに丸めたり、浮動小数点形式になります。
+ この動作は変える事も出来ます。詳しくは、「数値から文字列にする時に、実数を7桁以上表示させる方法」
** 処理系に依存する動作
o 以下の処理系では、全角文字を使うと結果不正になる事がありました。
+ Mawk for Windows 1.3.3
+ original = the one true awk(updated May 1, 2007)
o 例えば、v = "表ミクさん表表ミクさん\\aa"; gsub(/\\/, "x", v); で正しい結果になりません。
+ Mawk for Windows 1.3.3 の場合、「表」の2バイト目も変換しました。
+ original = the one true awk(updated May 1, 2007)の場合、変数に入れた時点で「表」が文字化けしました。
**** 確認した処理系
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
▼制作メモ
> sub = 文字列を、最初の1つだけ置き換える
gensub = n番目に見つかった文字列を置き換える
toupper = アルファベットを大文字にする
+
CONVFMT = 数値を文字列に自動変換する時の書式
IGNORECASE = 文字列比較の時に、大文字小文字を区別させない(Gawk専用)
(2011年8月9日追加。置き換えるのは改行コードの手前まで)
(2010年8月23日追加。「&」の特例)
(2010年8月17日追加。確認した処理系を3つ追加)
(2010年6月10日追加。数値を指定した時の動作)