%EC%97%90%EC%84%9C%20%EB%82%A0%EC%A7%9C%EB%A5%BC%20%ED%95%84%ED%84%B0%EB%A7%81%ED%95%A9%EB%8B%88%EB%8B%A4.%20%EB%98%90%ED%95%9C%20%EB%A7%88%EC%A7%80%EB%A7%89%20%EC%84%B8%20%EB%B2%88%EC%A7%B8%20%EC%97%B4%EC%9D%B4%20%EB%B9%84%EC%96%B4%20%EC%9E%88%EC%9C%BC%EB%A9%B4%20%EB%8B%A4%EC%9D%8C%20%EC%A4%84%EC%9D%84%20%EC%9D%B8%EC%87%84%ED%95%98%EC%8B%AD%EC%8B%9C%EC%98%A4..png)
입력 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
현재 날짜를 얻으려면 쉘 명령이 필요합니다형식을 지정한 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
단일 GNU 사용앗프로세스:
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
(원하는 파일 이름을 지정할 수 있습니다).