パスワードを忘れた? アカウント作成
14035679 journal
プログラミング

iidaの日記: sedとjshellの置換(続々) 2

日記 by iida

承前
sedではできないが、正規表現としてJavaやPerlでは空文字列も指定できる。
Javaで"ab".replaceAll("","A")が、
Perlでperl -e '$_="ab";s//A/g;print'が、
両方ともAaAbAになっている。
もしsedでs//A/gをそういう意味にできたら、きっとaAbAとなったに違いない。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by doda (31157) on 2019年10月31日 14時31分 (#3709102) 日記

    以下の結果から sed でも AaAbA になると思います。

    % echo "ab" | sed 's/\(\)/A/g'
    AaAbA

    ruby も試してみたら Java や Perl と同じで a の後ろの隙間が置換されています。

    irb(main):001:0> 'ab'.gsub(//, 'A')
    => "AaAbA"
    irb(main):002:0> 'ab'.gsub(/a*/, 'A')
    => "AAbA"
    irb(main):003:0> 'ab'.gsub(/a*/, '(\&)')
    => "(a)()b()"

    awk は sed と同じっぽい。

    % echo "ab" | awk '{gsub("", "A"); print}'
    AaAbA
    % echo "ab" | awk '{gsub("a*", "A"); print}'
    AbA
    % echo "ab" | awk '{gsub("a*", "(&)"); print}'
    (a)b()

typodupeerror

UNIXはただ死んだだけでなく、本当にひどい臭いを放ち始めている -- あるソフトウェアエンジニア

読み込み中...