文字列を見つけて、2つのタグ間を削除して繰り返します。

文字列を見つけて、2つのタグ間を削除して繰り返します。

ファイル内の文字列を探して、その前のタグの最初のインスタンスを見つけて、そのタグと閉じるタグの間のすべてのエントリを削除してから、ファイルの残りの部分に対してこのプロセスを繰り返すにはどうすればよいですか?

私はこれを探していましたが、sed私が知っている限り、削除する行数を指定する必要があり、行数は2つのマーカーごとに異なる場合があります。

ベストアンサー1

タグがネストされていないと仮定します。

perl -0777 -pe 's{<tag>.*?</tag>}{
  my $r = $&; $r =~ /string/ ? "" : $r}gse' < "$file"

おすすめ記事