Como posso usar o awk para criar uma variável que é usada na próxima linha?

1

Eu tenho um arquivo com uma lista de informações. Cada linha tem 12 ou 13 campos. Por exemplo, vou usar um arquivo com 3 e 4 campos.

e.g. myfile.txt
user password location date
john passwd1  new_york today
     passwd2  london   yesterday
jeff passwd3  new_york tomorrow

Estou procurando uma maneira que leve o nome de johns e copie-o para a próxima linha no espaço em branco.

até agora estou tentando algo como:

Awk '{{if(NF==4) print $0; name=$1}; if(NF==3) print $name,$0}' ./myfile.txt >> ./my_editedfile.txt.

Toda vez que eu tento, no entanto, ele imprime o literal $ 1, nada ou o primeiro campo da próxima linha duas vezes. ou seja, a linha dois será parecida com a seguinte:

$1 passwd2 london yesterday
passwd2 london yesterday
passwd2 passwd2 london yesterday

Alguém pode ajudar a definir uma variável em uma linha e usá-la para imprimir na seguinte?

    
por Xentrees 02.09.2015 / 03:42

1 resposta

1

Você está bem perto. Você não precisa da vírgula ou do $ antes de sua variável. Experimente:

awk '{if (NF == 4) {print $0; name=$1} else {print name$0}}'
    
por 02.09.2015 / 04:28

Tags