ayuda con scritp en linux o batch

Iniciado por guidosl, 15 Mayo 2010, 03:09 AM

0 Miembros y 1 Visitante están viendo este tema.

guidosl

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

cgvwzq

Aquí he hecho algo en batch... =)

Código (dos) [Seleccionar]
@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...
Some stuff:

  • www.a] parsed as www.a]
  • Bypass elhacker's img filter with ALT attribute!
  • ¿Para cuándo SQLi I y II? WZ



biribau

En Perl:
Código (perl) [Seleccionar]
my %numbers;
while(<>) {
my $line = $_;
my $n;
($n) = $line =~ m/\"([0-9]*)\"/;
print $line if(!$numbers{$n});
$numbers{$n} = 1;
}