gente tengo un xxx.xml con lineas
cada linea contiene bloques que podriamos ponerle como delimitardor comillas(cada bolque de texto esta encerrado entre comillas)
lo que necesito es ahcer un script q me recorra el archivo y me compare todos los numeros del bolque 6 y elimine los repetidos
osea en todas las lineas, en el bloque 6 hay un numero quiero q compare cada uno con cada bloque 6 de cada linea y si encuentra repetidos que elimine las lienas completas, PERO conservado uno de esos blokes repetidos
ejemplo con 3 bloques (comparando bloque 2):
"asdhgjg" "123" "sdfjhsdfl"
"asdhgjg" "321" "sdfjhsdfl"
"asdhgjg" "456" "sdfjhsdfl"
"asdhgjg" "654" "sdfjhsdfl"
"asdhgjg" "123" "sdfjhsdfl"
"asdhgjg" "789" "sdfjhsdfl"
"asdhgjg" "987" "sdfjhsdfl"
"asdhgjg" "123" "sdfjhsdfl"
"asdhgjg" "000" "sdfjhsdfl"
"asdhgjg" "123" "sdfjhsdfl"
"asdhgjg" "111" "sdfjhsdfl"
"asdhgjg" "123" "sdfjhsdfl"
esta repetido el "123"
quiero q se eliminen todas las lineas completas q contengan el "123" solamente conservando una de ellas...quedando:
"asdhgjg" "123" "sdfjhsdfl"
"asdhgjg" "321" "sdfjhsdfl"
"asdhgjg" "456" "sdfjhsdfl"
"asdhgjg" "654" "sdfjhsdfl"
"asdhgjg" "789" "sdfjhsdfl"
"asdhgjg" "987" "sdfjhsdfl"
"asdhgjg" "000" "sdfjhsdfl"
"asdhgjg" "111" "sdfjhsdfl"
pense en hacerlo con un cut pero la verdad que estoy medio perdido...quiza para algunos es una boludes hacerlo
desde ya muchas gracias
Aquí he hecho algo en batch... =)
@echo off
setlocal ENABLEDELAYEDEXPANSION
set /p file="Archivo: "
set /a i=0
set /a r=0
for /f "tokens=1,2,3" %%a in (!file!) do (
call :asig %%~b
for /l %%x in (1;1;!i!) do (
call :comp %%x
)
if !r! EQU 0 echo %%a %%b %%c
set /a r=0
)
goto:eof
:asig
set /a i+=1
set array%i%=%1
goto:eof
:comp
if not %1 EQU %i% (
if !array%1! EQU !array%i%! set /a r=1
)
goto:eof
Seguro que es mejorable, pero funciona...
En Perl:
my %numbers;
while(<>) {
my $line = $_;
my $n;
($n) = $line =~ m/\"([0-9]*)\"/;
print $line if(!$numbers{$n});
$numbers{$n} = 1;
}