.csv 파일의 특정 열에서 날짜를 개별적으로 필터링하고 출력을 다른 csv 파일에 저장하는 셸 스크립트

.csv 파일의 특정 열에서 날짜를 개별적으로 필터링하고 출력을 다른 csv 파일에 저장하는 셸 스크립트

7/20/2017 17:00예를 들어, 여섯 번째 열에 나열된 날짜 형식의 .csv 파일을 생각해 보세요.

입력을 제공하면 7/11/2017일치하는 입력 날짜로 열을 필터링해야 하며 출력은 다른 .csv 파일에 저장되어야 합니다.

주어진 입력을 기반으로 여섯 번째 열을 필터링하는 명령이 필요합니다.

file.csv에는 다음 항목이 있습니다.

23,54,one,tree,56,7/20/2017 17:00,23,iii,89
23,54,one,tree,56,7/20/2017 17:00,23,iii,89
23,54,one,tree,56,7/21/2017 17:00,23,iii,89
23,54,one,tree,56,7/30/2017 17:00,23,iii,89

마찬가지로 여섯 번째 열에는 여러 날짜 및 시간 형식의 항목이 있습니다. 런타임 시 입력(예: 읽기)이 주어지면 7/20/2017열 6의 날짜를 필터링하고 출력 항목을 다른 .csv 파일에 저장해야 합니다.

답변1

간단하게:

awk -F, -v d="7/20/2017" '$6~d' input.csv > dates.csv

콘텐츠 dates.csv:

23,54,one,tree,56,7/20/2017 17:00,23,iii,89
23,54,one,tree,56,7/20/2017 17:00,23,iii,89

날짜 값이 쉘 변수에서 오는 경우:

d="7/20/2017"
awk -F, -v d="$d" '$6~d' input.csv > dates.csv

답변2

다음 형식의 날짜가 포함된 열이 하나만 있다고 가정합니다.

$ grep -F '7/20/2017' file.csv
23,54,one,tree,56,7/20/2017 17:00,23,iii,89
23,54,one,tree,56,7/20/2017 17:00,23,iii,89

새 파일로 리디렉션할 수 있습니다.

$ grep -F '7/20/2017' file.csv >new.csv

CSV 파일을 올바르게 구문 분석하려면 내장된 CSV 구문 분석기를 사용하세요.CSVkit 도구:

$ csvgrep -c 6 -m '7/20/2017' file.csv
23,54,one,tree,56,7/20/2017 17:00,23,iii,89
23,54,one,tree,56,7/20/2017 17:00,23,iii,89

관련 정보