awk está limitado a apenas uma linha de operações?

1

Como no assunto. Digamos que eu tenha um arquivo que contenha:

*aaa A B C

D E F 55

*ccc A B C

R E T 33

e eu saberia se é possível fazer uma declaração se $ 1 == "* aaa" imprimir $ 4 da próxima linha. Eu sei que uma das soluções poderia ser conventar arquivos para esta saída:

*aaa A B C D E F 55

*ccc A B C R E T 33

usando "*" como separador de linha, mas gostaria de evitar isso.

Atenciosamente, lucas

    
por lucas 13.12.2013 / 21:18

1 resposta

1

Use uma variável (chamada primed no exemplo) que é definida se a correspondência for encontrada. a instrução next lê a próxima linha que é então impressa se o priming for definido.

awk '{
if (primed) print $4; 
if ($1 == "*aaa") { primed=1; next } primed=0; }' file
    
por 13.12.2013 / 21:33

Tags