输入 csv 文件是
23,54,one,tree,56,23,7/20/2017 17:00,iii,89
23,54,one,tree,56,23,7/20/2017 17:00,iii,89
23,54,one,tree,56,23,7/21/2017 17:00,iii,89
23,54,one,tree,56,23,7/30/2017 17:00,iii,89
需要 shell 命令来获取当前日期格式7/20/2017
,然后使用 csv 文件中倒数第三列的相同日期进行过滤(不应从第一个或开始检测列,因为逗号会有所不同,因此应从倒数第三列开始)
答案1
awk -F, -v "today=$(date "+%m/%d/%Y" | sed 's/^0//')" '$(NF-2) ~ "^"today' file
对使用 sed 不满意,请仔细阅读日期手册页:
awk -F, -v "today=$(date "+%-m/%d/%Y")" '$(NF-2) ~ "^"today' file
# .........................^^^
如果倒数第三列为空或者是“今天”
awk -F, -v "today=$(date "+%-m/%d/%Y")" '$(NF-2) == "" || $(NF-2) ~ "^"today' file
答案2
使用单一 GNUawk过程:
awk -F',' 'BEGIN{ d=strftime("%-m/%d/%Y", systime()) }
$(NF-2)~/^[[:space:]]*$/{ print > "empty_dates.txt" }$(NF-2)~d' file
$(NF-2)~/^[[:space:]]*$/{ print > "empty_dates.txt" }
- 如果第三个字段(最后)为空 - 将行打印到文件中empty_dates.txt
(您可以指定您喜欢的文件名)