awk se o comando que trabalha para imprimir apenas a coluna 19, mas como eu conseguiria imprimir ambas as colunas?

0

Eu quero imprimir as colunas 3 e 4, mas sem imprimir os cabeçalhos das linhas de coluna vazias.

header
tap
norm 
X Y       880 1787
X Y       3253 3439

Imprimindo via awk '{print($3,$4)}'

(BLANK lines from header rows)
880 1787
3253 3439

Isso funciona para imprimir apenas a coluna 19, mas como eu conseguiria imprimir ambas as colunas?

awk  '$3{print $3}' 
880
3253

Eu quero col3 col4

880 1787
3253 3439

Eu tentei, mas obtive apenas a coluna 3 impressa

awk '$3{print $3}''$4{print $4}' 
880
1787
3253
3439
    
por Dominique 10.04.2018 / 02:10

2 respostas

1

Você sabe quanto tempo a cabeça está (três linhas):

awk 'NR > 3 { print $3, $4 }'

NR é o número de registros (linhas por padrão) que foram lidos até o momento. Com NR > 3 , acionamos a instrução print para a quarta linha e todas as linhas depois.

Você poderia usar

awk '$3 { print $3, $4 }'

mas isso é um pouco frágil, pois depende não apenas de $3 estar presente, mas também de que é diferente de zero (um zero na terceira coluna não daria saída para essa linha).

    
por 10.04.2018 / 08:36
0

Se

header
tap
norm
X Y 880 1787
X Y 3253 3439

Então

awk '{print $3 " " $4}' | sed '/^ *$/d'

Faz

880 1787
3253 3439

E para sua última parte, você pode tentar

 awk '{print $3 " " $4 " " $19}'

Para imprimir as colunas 3ª, 4ª e 19ª.

    
por 10.04.2018 / 07:15

Tags