0

この質問は

sedで欲張りアプローチを使用してテキストを置き換える方法は?

ファイル内の複数行のデータを照合する必要があり、perlを使用してそれらを他のテキストに置き換える必要があります。

catファイル

 <strong>ABC
       </strong>

perlスクリプト:code.pl

 #!/bin/perl
 open(fh, $ARGV[0]) or die "could not open file\n";
 while($input = <fh>)
 {
      if($input =~/&lt;strong&gt;(.*?)\n(\s)*&lt;\/strong&gt;/)
      {
          print($1,"\n");
      }
 }
 close(fh);

perlcode.plファイル

出力:出力なし

上記のpblmを解決する方法。

よろしく

4

1 に答える 1

2
use File::Slurp qw( read_file );

my $string = read_file( $ARGV[0] );

$string =~ s/\&lt;strong&gt;(.*?)&lt;\/strong&gt;/<b>${1}<\/b>/gs;

print $string;

この例では、File::Slurp モジュールを使用して、ファイル全体を一度に読み込みます。

g次に、修飾子と修飾子を含む正規表現を使用しsます。は、改行文字の一致をs許可します。.*?g、検索をグローバルにします。グローバルは、指定された文字列内のすべての一致を検索することを意味します。g最初のインスタンスのみが置き換えられない場合。i検索で大文字と小文字を区別しないようにする場合は、 regex 修飾子を使用できます。

${1}、括弧内の一致への後方参照です。

この例では以下が生成されます。

<b>ABC
     </b>
于 2013-01-18T06:02:15.257 に答える