awk uma única linha

2

Estou tentando usar um script awk que compila várias linhas em uma; como posso fazer isso?

Estou usando o comando:

awk < $pot/towhee.prod 'NR==411{print$5,$6}''NR==412{print$5,$6}''NR==430{print$7,$8}' 

e isso produz:

0.24975E-01 0.00000E+00
0.36574E+04 0.59343E+02
-3340.691 0.399

mas eu quero isso:

0.24975E-01 0.00000E+00 0.36574E+04 0.59343E+02 -3340.691 0.399

Como posso fazer isso?

    
por Joao Macau 23.05.2014 / 15:53

3 respostas

4

Você pode definir o separador de registro de saída para um espaço (ou tabulação). Se você quiser que a saída seja impressa com uma nova linha final, você pode alterá-la antes da impressão final

awk 'BEGIN{ORS=" "} NR==411{print$5,$6}''NR==412{print$5,$6}''NR==430{ORS="\n"; print$7,$8}'
    
por 23.05.2014 / 16:06
3

printf permite mais controle sobre o formato de impressão, incluindo nenhuma nova linha, a menos que você especifique uma com \n .

awk < $pot/towhee.prod 'NR==411{printf("%s %s ",$5,$6)}''NR==412{printf("%s %s ",$5,$6)}''NR==430{printf("%s %s ",$7,$8)}' 

%s indica o formato da string da variável. Outras cartas de controle estão disponíveis que permitem mais controle sobre o formatação de cada variável.

    
por 23.05.2014 / 16:08
1

Tente isso,

awk < $pot/towhee.prod 'NR==411{print$5,$6}''NR==412{print$5,$6}''NR==430{print$7,$8}' | tr '\n' ' '
    
por 23.05.2014 / 16:02

Tags