gpt4 book ai didi

bash - 使用控制语句在 AWK (GNU) 中动态传递月份名称

转载 作者:可可西里 更新时间:2023-11-01 16:28:59 24 4
gpt4 key购买 nike

您好,我正在尝试使用以下命令匹配月份和日期(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

但如果我硬编码 Month 它就可以工作

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

请建议我在代码中缺少什么?

最佳答案

您的 month 变量中有引号,因此请使用:

date --date="6 days ago" +\%b

或者,在 awk 中,通过以下方式引用月份:

gensub("\"","","g",month)

我注意到您在两个变量赋值 (-v) 之间也有逗号,需要将其删除。完整的解决方案是:

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

关于bash - 使用控制语句在 AWK (GNU) 中动态传递月份名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44921348/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com