Cómo eliminar partes de un archivo que son iguales a otro archivo perl
Después de ver tu solicitud, lo probé. Para darle mi idea, primero lea el contenido de TXT2 línea por línea en una matriz, luego compare los elementos de esta matriz (es decir, el contenido de cada línea) con cada línea de txt1 e imprima el resultado. Si desea guardar en TXT3, simplemente use el símbolo "> " para redirigir.
El código es el siguiente, solo como referencia:
#! /usr/bin/perl -w
#txtout.pl
use estricto;
mi @tmp;
#txt2 lee @tmp.
abre FD, "txt2"
o muere "$!:";
mientras (
{
chomp;
push @tmp, $_ if ($_=~/\S+/);
}
cerrar FD;
para (@tmp)
{
imprimir "$_\n";
}
#Operar en txt1.
$^I=".bak";
mientras(<>)
{
para mi $comp (@tmp)
{
s/^$comp//;
}
print;
}
ps: el contenido eliminado se ha impreso en la pantalla, también puede enviarlo a txt3 redirigiendo ">". Simplemente ejecute el siguiente comando: perl txtout.pl txt1 > txt3.
Nota: Lo he probado, si hay "*" en txt2, no se generará. Aún no he resuelto este problema.