다음 데이터가 포함된 csv 파일이 있습니다.
12,1234,28-07-2018 05:28:12.21,ABC60,3456,28-07-2018 05:28:12.21,AB60,7580,28-07-2018 06:28:12.21,PQ
Unix를 통해 파일에서 모든 날짜 열을 제거해야 합니다.
답변1
쉼표로 구분된 필드 내에 쉼표가 포함되어 있지 않고 열 3, 6, 9를 삭제하려고 한다고 가정합니다.
$ cut -d, -f1,2,4,5,7,8,10 <file
12,1234,ABC60,3456,AB60,7580,PQ
이 cut
명령은 파일에서 지정된 열을 추출합니다. 기본적으로 탭 문자가 열 구분 기호로 사용되지만 -d,
구분 기호를 쉼표로 설정했습니다. 이 -f
옵션은 추출할 열 번호(또는 열 번호 범위)를 사용합니다.
csvcut
다음에서 사용CSV 키트진정한 CSV 파서인 , 내장된 쉼표가 포함된 필드도 처리할 수 있습니다.
$ csvcut -c 1,2,4,5,7,8,10 file
12,1234,ABC60,3456,AB60,7580,PQ
이 도구는 기둥의 절단도 처리할 수 있습니다.이름파일의 각 열에 헤더가 있는 경우.
답변2
사용 awk
:
echo "12,1234,28-07-2018 05:28:12.21,ABC60,3456,28-07-2018 05:28:12.21,AB60,7580,28-07-2018 06:28:12.21,PQ" | awk -F ',' '{for (i=1;i<=NF;i++) if($i !~ "-") printf "%s,",$i}'
12,1234,ABC60,3456,AB60,7580,PQ,
- 누락된 열 인쇄
-
답변3
그렇지는 않지만 awk
...
tr ',' '\n' < csv | grep -E -v '^[0-9]{2}-[0-9]{2}-[0-9]{4}' | tr '\n' ','
12,1234,ABC60,3456,AB60,7580,PQ,