[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-users:26980] Re: sub()/gsub() error in gawk-ja
At Fri, 16 Feb 2001 15:46:09 +0900,
MATSUDA Yoh-ichi / 松田陽一 wrote:
> 日常使用している gawk-ja なんですが、 sub() 及び gsub() の実装に
> 不具合と思われる挙動を発見しました。
gawk-ja は知りませんが、これは mawkとgawkでの
文字列定数の中での \ エスケープの仕様の違いっぽいですが。
% echo | mawk '{print "\&";}'
\&
# mawk(1)より
# Data types, conversion and comparison
# If you escape any other character \c, you get \c, i.e.,
# mawk ignores the escape.
% echo | gawk '{print "\&";}'
&
% echo | gawk '{print "\\\&";}'
\&
# gawk(1)より
# String Constants
# \c The literal character c.
で、awk では & はマッチした文字列とおきかわるので
> hoge:~/work$ echo ">"|mawk "{sub(/>/,\"\>\");print}"
> >
> hoge:~/work$ echo ">"|gawk "{sub(/>/,\"\>\");print}"
> >gt;
となります。
# gawk では escapeをはずされると />/を > で subすることになるので
# & はマッチした > になって 結果 >gt; になる。
以下のようにすると
% echo ">"|gawk '{print "\\\>";}'
>
となります。
ちなみに
% echo ">"|mawk '{print "\046gt";}'
% echo ">"|gawk '{print "\046gt";}'
でどちらも > になります。
> BTS に出すべきでしょうか?
>
> # 出し方を知らないんですが…(汗)
http://bugs.debian.org/ を見ましょう:)
# 例えば reportbug を使うとか。
--
鵜飼文敏