テキストファイルを置換する

bashなんかだと

sed -i "s/hoge/ukeke/g" test.txt

なんて方法でファイル内の文字置換を行える。

しかし、今回はPerl…

systemコマンドでsedを実行してやればなんとなく出来そうな気がするものの、スマートじゃないので別の方法を考える。

my $filename  =  ["test.txt"];
my $dat1  =  "hoge"; # 置換対象文字列
my $dat2  =  "ukeke"; # 置換するの文字列

$^I  = ".bak"; # 置換するファイルの.bakを付けてバックアップファイルを作成してくれる
@ARGV  =  @$filename;

while (<>) {
  s/$dat1/$dat2/g;
  print;
}

これで、test.txtのhogeはukekeに置換されたはず。

ファイルをオープンして読込む必要が無いからか、実行スピードもそれなり(^^;)

全てがこれで対応できるわけではないので、状況に合わせて利用する

perl/置換.txt · 最終更新: 2011/09/28 15:03 by miyako
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0