Me estoy convirtiendo en un CSV archivo en un formato de tabla, y escribí un guión AWK y lo guardó como a mi.awk. Aquí está el script:

#AWK for test
awk -F , '
    BEGIN {
        aa = 0;
    }
    {
        hdng = "fname,lname,salary,city";
        l1 = length($1);
        l13 = length($13);
        if ((l1 > 2) &&  (l13 == 0)) {
            fname = substr($1, 2, 1);
            l1 = length($3) - 4;
            lname = substr($3, l1, 4);
            processor = substr($1, 2);
            #printf("%s,%s,%s,%s\n", fname, lname, salary, $0);
        }

        if ($0 ~ ",,,,")
            aa++
        else if ($0 ~ ",fname")
            printf("%s\n", hdng);
        else if ((l1 > 2) && (l13 == 0)) {
            a++;
        }
        else {
            perf = $11;
            if (perf ~/^[0-9\.\" ]+$/)
                type = "num"
            else
                type = "char";
            if (type == "num")
                printf("Mr%s,%s,%s,%s,,N,N,,\n", $0,fname,lname, city);
        }
    }
    END {
    } ' < life.csv > life_out.csv*

¿Cómo puedo ejecutar esta secuencia de comandos en un servidor Unix? He intentado ejecutar este mi.awk archivo mediante este comando:

awk -f my.awk life.csv
InformationsquelleAutor Sharad | 2012-04-03

3 Comentarios

  1. 31

    El archivo es un secuencia de comandos de shell, no un programa awk. Por lo tanto, tratar sh my.awk.

    Si quieres usar awk -f my.awk life.csv > life_out.cs, a continuación, retire awk -F , ' y la última línea del archivo y agregar FS="," en BEGIN.

    • puedes salida de la tubería de algo como tail -f en un awk secuencia de comandos de shell? Así que podría cola de un archivo de registro, a continuación, hacer algún tipo de procesamiento con awk, la salida a la pantalla?
    • En realidad parece que stoggy responder a continuación es lo que estoy buscando.
  2. 17

    Si pones #!/bin/awk -f en la primera línea del script AWK es más fácil. Además, a continuación, los editores como Vim y … se reconoce el archivo como un guión AWK y usted puede colorear. 🙂

    #!/bin/awk -f
    BEGIN {}  # Begin section
    {}        # Loop section
    END{}     # End section

    A continuación, usted puede llamar a su AWK script como este:

    `$ echo "something" | ./awk-script`

    después de cambiar el archivo sea ejecutable por correr, por ejemplo:

    chmod ugo+x ./awk-script
  3. 12

    Poner la parte de BEGIN....END{} dentro de un archivo y el nombre como a mi.awk.

    Y, a continuación, ejecutarlo como la siguiente:

    awk -f my.awk life.csv >output.txt

    También veo un separador de campo como ,. Usted puede agregar que en el bloque begin de la .awk archivo como FS=","

Dejar respuesta

Please enter your comment!
Please enter your name here