![日期早于当前日期 90 天的订阅者](https://linux22.com/image/116368/%E6%97%A5%E6%9C%9F%E6%97%A9%E4%BA%8E%E5%BD%93%E5%89%8D%E6%97%A5%E6%9C%9F%2090%20%E5%A4%A9%E7%9A%84%E8%AE%A2%E9%98%85%E8%80%85%20.png)
我必须仅显示那些处于“未连接状态”且日期比今天早 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 。<