我必须仅显示那些处于“未连接状态”且日期比今天早 90 天的订阅者。
以下命令用于此目的:
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}
问题是这个表达式没有被计算:( substr($11,2,8) -lt $dm )
dm=$(perl -e 'use
POSIX qw(strftime); print strftime "%Y%m%d",localtime(time()- 3600*24*90);')
结果为“20170520”,这是正确的。
请帮助我在命令中正确评估和比较该表达式。
答案1
dm=$( )
在 awk 之外评估,尝试
... | nawk -v dm=$(perl ... ) ' ... '
并且不要在 awk 中使用-lt
but 。<