csv의 특정 열에서 날짜 범위를 필터링하는 명령이 있지만 시작 날짜와 종료 날짜가 동일하고 입력 파일에 해당 날짜에 대한 항목이 하나만 있는 경우 작동하지 않습니다.
awk -v start="$start" -v end="$end" -F, '$2>=start && $2<=end' Inputfile
start="10/25/2017"
두 번째 열의 날짜를 필터링하는 것은 잘 작동하지만 입력 파일이 다음과 end="10/25/2017"
같은 경우(예: "2017/10/25" 날짜에 대한 항목이 하나만 있는 경우) 출력을 얻지 못합니다.
1,10/25/2017,Scheduled
3,11/1/2017,Scheduled
1,11/2/2017,Scheduled
답변1
귀하의 사건과 데이터 파일을 정확하게 확인하였습니다. 하지만 그것은 나에게 효과적입니다
- AWK는 그러한 날짜에 대해 알지 못하므로 2017년 9월 30일은 2017년 10월 1일보다 높습니다. 따라서 결과는 단지 문자열이기 때문에 예상과는 거리가 멀 수 있습니다!
- 2017/09/30 및 2017/10/01과 같은 "군사 유형 타이밍"이 작동합니다.
- 월/일/년을 구분하고 그에 따라 비교합니다. 하지만 이 경우 awk 대신 perl을 권장합니다.
어쩌면 그것은 당신이 겪고 있는 가변 범위 문제일 수도 있습니다.
예를 들어, export start='10/25/2017' ; export end='10/25/2017'
서브셸에서 실행하는 대신 awk를 사용해 보세요.start="10/25/2017"