dm=$( )
é avaliado fora do awk, tente
... | nawk -v dm=$(perl ... ) ' ... '
E não use -lt
mas <
no awk.
Eu tenho que exibir apenas os assinantes que estão em "estado desconectado" e a data é 90 dias mais velha que a data de hoje.
Abaixo, o comando é usado para essa finalidade:
cat vfsubscriber_20170817.csv | sed -e 's/^"//' -e '1d' | nawk -F '",' '{if ( (substr($11,2,4) == 2017) && ( substr($11,2,8) -lt $dm )&&($9=="\"unconnected") ) print $1,substr($11,2,8),$dm}' dm=$(perl -e 'use
POSIX qw(strftime); print strftime "%Y%m%d",localtime(time()- 3600*24*90);') > ${EXTRACT_FILE}
O problema é que essa expressão não está sendo avaliada: ( substr($11,2,8) -lt $dm )
dm=$(perl -e 'use
POSIX qw(strftime); print strftime "%Y%m%d",localtime(time()- 3600*24*90);')
resulta em "20170520", o que é correto.
Por favor me ajude a obter esta expressão avaliada e comparada corretamente no comando.
dm=$( )
é avaliado fora do awk, tente
... | nawk -v dm=$(perl ... ) ' ... '
E não use -lt
mas <
no awk.