La salida de mi script es delimitado por tabulaciones utilizando awk como :

awk -v variable=$bashvariable  '{print variable"\t single\t" $0"\t double"}' myinfile.c

La awk comando se ejecuta en un bucle while que actualiza el valor de la variable y el archivo myinfile.c para cada ciclo.
Estoy consiguiendo los resultados esperados con este comando .
Pero si el inmyfile.c contiene una línea en blanco (puede contener) se imprime ninguna información relevante. puedo decir awk ignorar la línea en blanco ?

Sé que se puede hacer mediante la eliminación de las líneas en blanco de myinfile.c antes de pasar a awk .
Estoy en conocimiento de sed y tr manera, pero quiero awk hacerlo en el mencionado comando en sí y no una solución independiente de la siguiente o de una red de distribución de uno.

sed '/^$/d' myinfile.c
tr -s "\n" < myinfile.c

Gracias de antemano por sus sugerencias y respuestas.

InformationsquelleAutor Gil | 2012-07-27

4 Comentarios

  1. 47

    Hay dos enfoques que pueden tratar de filtrar líneas:

    awk 'NF' data.txt

    y

    awk 'length' data.txt

    Acaba de poner estos en el inicio de su comando, es decir,

    awk -v variable=$bashvariable 'NF { print variable ... }' myinfile

    o

    awk -v variable=$bashvariable 'length { print variable  ... }' myinfile

    Tanto de estas actúan como guardianes/si-declaraciones.

    El primer método funciona sólo printining líneas donde el número de campos (NF) no es cero (es decir, mayor que cero).

    El segundo método se ve en la longitud de la línea y las leyes, si la longitud no es cero (es decir, mayor que cero)

    Usted puede elegir el enfoque más adecuado a sus datos y necesidades.

  2. 9

    Sólo podría agregar

    /^\s*$/ {next;}  

    Al frente de su secuencia de comandos que va a coincidir con las líneas en blanco y omitir el resto de los awk reglas de coincidencia. Ponerlo todo junto:

    awk -v variable=$bashvariable '/^\s*$/{next;} {print variable"\t single\t" $0"\t double"}' myinfile.c
  3. 2

    puede ser que usted podría probar esto:

    awk -v variable=$bashvariable  '$0{print variable"\t single\t" $0"\t double"}' myinfile.c
  4. 1

    Intente esto:

    awk -v variable=$bashvariable '/^.+$/{print variable"\t single\t" $0"\t double"}' myinfile.c

Dejar respuesta

Please enter your comment!
Please enter your name here