Estou tentando awk
modificar alguns arquivos txt usando este código
awk -F":" '/^title/ { o=FNR+2 } ;FNR>o { print sprintf("%-10s %-10d %-10s",FILENAME,o,$0) }' r.txt
mas não funcionou até eu substituir a condição como esta FNR>5
.
Então tentei muito aqui, mas não descobri a solução. coloquei "FNR>o"
& FNR>$o
mas nada.
Então pessoal alguém pode me ajudar aqui! entrada :
date: 22.01.2020
name : xrgsm02
title : RCV20
----------------
----------------
15 20
30 40
50 12
55 77
resultado
r.txt 5 15 20
r.txt 5 30 40
r.txt 5 50 12
r.txt 5 55 77
O problema:
>
operador com um valor não inicializadoo
não seja inicializado, ele tem um valor numérico de0
e um valor de string da string vaziao
é definido com/^title/ { o=FNR+2 }
, mas/^title/
não aparece até o terceiro registro. Portanto, para os dois primeiros registroso
não é inicializado e éFNR>o
avaliado comotrue
(porqueFNR==1
&FNR==2
sãogreater than zero
)Solução possível:
o
deve ser diferente de zero, além deFNR>o
Além disso,
o
é um pouco confuso como um nome de variável de uma única letra - considere usar uma letra comon
ou uma palavra mais descritiva comooutput
em vez dissopoderia ser simplificado para:
ou ainda: