Passando a variável timestamp do shell para o gawk [duplicado]

0

Eu quero tirar a diferença de tempo de dois carimbos de hora, mas recebendo um erro ao passar a variável timestamp do shell para awk .

Código da shell:

FTIMESTAMP="2015-07-01 12:30:50"
gawk -v FTIMESTAMP=$FTIMESTAMP -v DSECONDS=$DSECONDS -f test.awk /home/abc/TShift.csv 

O erro é:

gawk: 12:30:50
gawk:   ^ syntax error

O caractere de escape também não está funcionando FTIMESTAMP="2015-07-01 12\:30\:50" .

Eu tenho outro timestamp em awk e quero tirar uma diferença de tempo entre eles.

    
por Aashu 09.10.2015 / 08:49

2 respostas

2

Você precisa citar variáveis para evitar que o shell execute o split + glob :

gawk -v FTIMESTAMP="$FTIMESTAMP" -v DSECONDS="$DSECONDS" ...

Uma observação de que -v var="$shell_var" expandirá as sequências de escape em $shell_var . Você precisa usar ENVIRON ou ARGV variables para passar $shell_var como é de shell para awk .

    
por 09.10.2015 / 08:59
0

tente

gawk -v FTIMESTAMP="$FTIMESTAMP" -v DSECONDS=$DSECONDS -f test.awk /home/abc/TShift.csv 

há um branco em $FTIMESTAMP

ou chamando shell

FTIMESTAMP="2015-07-01 12:30:50"
export FTIMESTAMP

e no script do awk (em BEGIN { .. } seção)

FTIMESTAMP=ENVIRON["FTIMESTAMP"] ;
    
por 09.10.2015 / 08:59

Tags