嗨,我正在尝试使用下面的命令来匹配月和日(6天前,也就是6月29日)来使用awk搜索目录,但是结果总是“0”,而应该是1800左右。
ls -ltr /test/output|awk -v month="$(date --date="6 days ago" +"\"%b\"")", -v day="$(date --date="6 days ago" +%d)" '$6 ==month && $7==day {print $9}'|wc -l
我也试过这个
ls -ltr /test/output|awk -v month="$(date --date="6 days ago" +%b)", -v day="$(date --date="6 days ago" +%d)" '$6 ==month && $7==day {print $9}'|wc -l
但是如果我每个月都硬编码的话,它是有效的
ls -ltr /test/output|awk -v month="$(date --date="6 days ago" +"\"%b\"")", -v day="$(date --date="6 days ago" +%d)" '$6 =="Jun" && $7==day {print $9}'|wc -l
请指出我在代码中遗漏了什么?
3条答案
按热度按时间hivapdat1#
月份变量中有引号,因此请使用:
或者,在awk中,使用以下内容来表示月份:
我注意到在两个变量赋值(-v)之间还有一个逗号需要删除。完整的解决方案是:
68bkxrlz2#
我试图使用你的awk过滤器查询,但我无法使它工作。
我通过重写查询并使用
grep
使用构造的日期字符串进行筛选而不是awk
.beq87vna3#
我找到了另一种计算方法。