Linux
從 csv 文件的特定列(從最後 3 列)過濾日期。此外,如果最後 3 列為空,則列印行
輸入 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 文件中最後第三列的相同日期進行過濾(不應從第一個或開始檢測列,因為逗號不同,因此應該從最後 3 個開始)
awk -F, -v "today=$(date "+%m/%d/%Y" | sed 's/^0//')" '$(NF-2) ~ "^"today' file
對使用 sed 不滿意,請更仔細地閱讀 date 手冊頁:
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
使用單個 GNU awk程序:
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
(您可以指定您喜歡的文件名)