ファイルの検索と置換を行う正規表現を作成しようとしています。以下はスクリプトです。検索と編集のための正規表現の構築
#!use/bin/perl
use strict;
use warnings;
my $line = $ARGV[0];
my $find = "[^a-zA-Z0-9]+seqfile[^a-zA-Z0-9]+=[^a-zA-Z0-9]+[a-z]+..";
my $replace = "done"; open (FILE, ">>/home/user/Desktop/test") || die "cant open file \n";
my @body = <FILE>;
foreach $line (@body) {
if (my $line =~ s/$find/$replace/g){
print FILE $line;
}
else {
print "did not replace \n\n";
}
}
close(FILE);
print "reached here\n";
exit;
プログラムをテストするために実行しているサンプルテストファイルは、数行のテキストで構成されています。置換したい文字列は、最初の行に"tobereplaced = file.aa"となります。スペース "\ s"の正規表現は私のシステムでは受け入れられなかったので、私はcarot(^)をアルファベット/数字以外の文字に使用しなければなりませんでした。私はプログラムが実行されたことを知っています。私のプログラムは、私が指定 正規表現を使用して文字列の 検索することができませんなぜ誰もが
- を提案することができます。私のシステムは 「\ s」を認識し、誰もが正規表現を研究するためのいくつかの の良いソースを示唆することができ、エラーも
- そして、「認識できないが、\は テストで通過sのエスケープ 」与えるものではありませんなぜ
- 。あなたは、二重引用符で囲まれた文字列を使用しているため
おかげ
オンライナーがほしい場合は、http://stackoverflow.com/questions/934733/perl-loop-through-a-file-and-substitute/934756#934756を参照してください。 –
「[^ a-zA -Z0-9] "は" \ P {IsAlnum} " – Axeman