[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: awk



Hola Andrés:

Desde hace un tiempo estaba por empezar aprender awk y me pareció interesante 
desde un principio hacerlo con tu inquietud. Después de un par de días de 
pruebas, llegué a este resultado:

javier@backy:~/tmp/Linux_LPI$ echo "texto1 PRINCIPIO texto2 FIN texto3 
PRINCIPIO texto4 FIN texto5." | awk -f ripear_cadena.awk
texto1
 texto3
 texto5.


El código fuente [1] de ripear_cadena.awk si tienes alguna con el programa 
escribe. También puedes hacerle la mejoría que desees.

Puedo comentarte que existen otras herramientas más potente que el mismo awk 
para el procesamiento de cadenas como perl, python y php y otras menos 
potentes y más sencillas como sed, grep, pr, cut entre otras.

Si hayas un buen algoritmo cualquiera puede servirte de igual manera, el 
algoritmo es muy importante:

[1]

{
        while ( $0 ~ /\<PRINCIPIO\>/ && $0 ~ /\<FIN\>/ ) {
                extremo_izq = substr($0, 1, match($0,/\<PRINCIPIO\>/)-1);
                print extremo_izq;
                sub_cadena = extremo_izq substr($0, match($0,/\<PRINCIPIO\>/), 
match($0,/\<FIN\>/)+RLENGTH - match($0, /\<PRINCIPIO\>/));
                sub(sub_cadena,"",$0);
        }

        print $0
}

El Martes, 19 de Diciembre de 2006 16:36, andmarti@gmail.com escribió:
> Qué tal gente? Sigo acá con AWK. Lo que estaba tratando desde hace días era
> lo siguiente:
>
> tengo un texto con algo como:
>
> texto1 PRINCIPIO texto2 FIN texto3 PRINCIPIO texto4 FIN texto5..
>
> Y lo que quería es que me borre lo que encuentre entre PRINCIPIO y FIN
> incluyendo a estos separadores. Cosa que quede:
> texto1 texto3 texto5
>
> Traté de usar .*, pero me dejaba: texto1 texto5.
> Qué puedo llegar a hacer?
>
> Saludos y gracias desde ya por cualquier propuesta.
> --
> Andrés M.



Reply to: