print column printing awk line gawk

printing - column - awk unix



Imprime cada lĂ­nea n en una fila usando gawk (5)

Tengo un archivo muy grande en el que necesito obtener cada línea n e imprimirlo en una fila.

Mis datos:

1 937 4.320194 2 667 4.913314 3 934 1.783326 4 940 -0.299312 5 939 2.309559 6 936 3.229496 7 611 -1.41808 8 608 -1.154019 9 606 2.159683 10 549 0.767828

Quiero que mis datos se vean así:

1 937 4.320194 3 934 1.783326 5 939 2.309559 7 611 -1.41808 9 606 2.159683

Este es, por supuesto, un ejemplo. Quiero cada décima línea para mi enorme archivo de datos. Intenté esto hasta ahora:

NF == 6 { if(NR%10) {print;} }


Con sed , puede hacer muchas variaciones sobre esto con bastante facilidad con el comando de first~step . Por ejemplo:

# Odd lines sed -n 1~2p file # Every tenth line (10, 20, 30, ...) sed -n 10~10p file # Every tenth line (1, 11, 21, ...) sed -n 1~10p file # First plus every tenth (1, 10, 20, 30, ...) sed -n -e 1p -e 10~10p file


Haciéndolo directamente en el símbolo del sistema (Windows).

Coloque el archivo gawk.exe en la carpeta donde se encuentra el archivo e inicie una solicitud de comando en la carpeta, y escriba

gawk "NR%n==x" oldfile.txt>newfile.txt

n es cada una de las líneas que desea imprimir y x es la línea de inicio.

Por ejemplo, n = 10 y x = 1, línea de impresión 1,11,21,31,41 ...... línea final desde el archivo original al nuevo archivo.

Por ejemplo, n = 20 y x = 5, línea de impresión 5,25,45,65 ...... línea final desde el archivo original al nuevo archivo.


No es (g) awk, pero funcionará:

cat myfile | grep ^[[:digit:]]*0[[:blank:]] cat myfile | grep ^[[:digit:]]*0[[:blank:]] debería hacer el truco.


Para imprimir cada segunda línea, comenzando con la primera:

awk ''NR%2==1'' file.txt

Para imprimir cada décima línea, comenzando con la décima línea:

awk ''NR%10==0'' file.txt

Para usar esto en un script, agregue lo siguiente a un archivo llamado script.awk :

BEGIN { print "Processing file" } NR%10==0 END { print "Finished processing" }

Luego ejecuta:

awk -f script.awk file.txt


Pedazo de pastel: cat test.txt | awk ''NR % 10 == 1'' cat test.txt | awk ''NR % 10 == 1''