[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-users:26989] Re: sub()/gsub() error in gawk-ja
小川です。
MATSUDA Yoh-ichi / 松田陽一 <matsuda@xxxxxxxxxxxx> writes:
> > # gawk では escapeをはずされると />/を > で subすることになるので
> > # & はマッチした > になって 結果 >gt; になる。
> >
> > 以下のようにすると
> > % echo ">"|gawk '{print "\\\>";}'
> > >
> > となります。
% echo ">" | gawk '{sub(/>/, "\\>"); print}'
というように、バックスラッシュ 2つでいいはずです。
バックスラッシュのエスケープシーケンスが使えるのでバックスラッシュ自身
を表す場合はバックスラッシュをバックスラッシュでエスケープする必要があ
るということではないでしょうか。
> げ、バックスラッシュ 3つなんて、そんなぁ…
>
> だとすると、 man gawk での
>
> | gsub(r, s [, t]) for each substring matching the
> | regular expression r in the string
> | t, substitute the string s, and
> | return the number of substitu-
> | tions. If t is not supplied, use
> | $0. An & in the replacement text
> | is replaced with the text that was
> | actually matched. Use \& to get a
> ^^^^^^^^^^^^^^^
> | literal &. See AWK Language Pro-
> ^^^^^^^^^^
> | gramming for a fuller discussion
> | of the rules for &'s and back-
> | slashes in the replacement text of
> | sub(), gsub(), and gensub().
>
> この記載は嘘だってことになりませんか?
man ページのバグっぽいですね。
info の方にはちゃんとバックスラッシュ 2つを書かなければならないとかい
てあるんですが。
それでは
--
OGAWA Hirofumi <hirofumi@xxxxxxxxxxxxxxxxxx>