複数のファイルからブロックテキストを検索して削除したいです。
一致するテキストブロックがファイルにあります。ディレクトリを解析し、/home/user/myblock.txt
ディレクトリ内のすべてのファイルから/home/user/rep
コンテンツを削除したいとします。mybloc.txt
ベストアンサー1
削除するテキストブロックが複数行にまたがっていて、各個々のファイルがRAMに収まる場合、最も簡単な方法は各ファイルをRAMに完全にロードしてグローバル文字列置換を実行することです。 Perlを使用すると、レコード区切り文字を設定せずにレコード-i -p
ごとにファイルレコードを変更することでこれを簡単に実行できます-0777
(基本レコード区切り文字は改行です)。
perl -0777 -i -pe '
BEGIN {
open BLOCK, "<", "/home/user/myblock.txt";
$block = <BLOCK>;
die unless length($block);
close BLOCK;
}
s/\Q$block//g
' /home/user/rep/*