삽입된 쉼표가 포함된 열 값을 기반으로 CSV 파일에서 행을 선택합니다.

삽입된 쉼표가 포함된 열 값을 기반으로 CSV 파일에서 행을 선택합니다.

고객 데이터, 고객 이름, 고객 이메일, 취소 사유, 취소 사유 댓글의 5개 열이 포함된 CSV 파일(CSV UTF-8(쉼표로 구분)(.csv))이 있습니다.

취소 사유 열에 "나중에 원하는 항목, 나중에 가져오지 않도록 선택"이 있는 행을 필터링한 다음 input1.csv라는 새 파일로 읽어들이려면 어떻게 해야 합니까?

내가 시도한 내용은 다음과 같습니다. 그러나 input1.csv가 공백으로 나타납니다.

awk -F , '$4 == "Wanted item later, choose not to get it later" { print }' input.csv > input1.csv

다음은 input.csv 파일에 대한 샘플 입력입니다.

cancellation date,customer first name,customer email,cancel reason,cancel reason comments
1/22/17,aaaa,[email protected],"Wanted item later, choose not to get it later", test

답변1

내 대답과 일치이전 질문, 사용csvkit, CSV가 올바르게 인용되고 쉼표를 구분 기호로 사용한다고 가정합니다.

$ csvgrep -c "cancel reason" \
    -m "Wanted item later, choose not to get it later" input.csv >input1.csv

또는

$ csvgrep -c 4 -m "Wanted item later, choose not to get it later" input.csv >input1.csv

답변2

5개의 필드를 기대하는 것 같습니다. 그러면 더 많은 필드가 있는 행이 식별됩니다.

awk -F, 'NF > 5' input > output

이는 네 번째 필드에서 쉼표를 구체적으로 찾지 않습니다.

답변3

grep -E ',"[^"]*,[^"]*"|"[^"]*,[^"]*",' input.csv > input1.csv

관련 정보