![파이프 구분 기호와 쉼표가 있는 일부 필드는 큰따옴표로 묶어야 하며 단일 필드로 처리되어야 합니다.](https://linux55.com/image/149430/%ED%8C%8C%EC%9D%B4%ED%94%84%20%EA%B5%AC%EB%B6%84%20%EA%B8%B0%ED%98%B8%EC%99%80%20%EC%89%BC%ED%91%9C%EA%B0%80%20%EC%9E%88%EB%8A%94%20%EC%9D%BC%EB%B6%80%20%ED%95%84%EB%93%9C%EB%8A%94%20%ED%81%B0%EB%94%B0%EC%98%B4%ED%91%9C%EB%A1%9C%20%EB%AC%B6%EC%96%B4%EC%95%BC%20%ED%95%98%EB%A9%B0%20%EB%8B%A8%EC%9D%BC%20%ED%95%84%EB%93%9C%EB%A1%9C%20%EC%B2%98%EB%A6%AC%EB%90%98%EC%96%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EB%8B%A4..png)
CSV 파일이 있습니다.
입력하다.
India|Andhra|asd,ged,ijn|telangana|41657|hgjd,dfef,edf|dfd
산출
India,Andhra,"asd,ged,ijn",telangana,41657,"hgjd,dfef,edf",dfd
답변1
csvformat
다음에서 사용csvkit:
$ csvformat -d '|' file.csv
India,Andhra,"asd,ged,ijn",telangana,41657,"hgjd,dfef,edf",dfd
csvkit 도구 상자의 도구는 CSV를 인식합니다(일반적으로 명령줄에서 수정 및 쿼리를 위한 CSV 파서입니다).
여기서는 형식이 변경된 입력 파일을 사용 csvformat
하고 입력의 필드 구분 기호가 파이프 기호임을 지정합니다 -d '|'
. 기본적으로 출력에서는 쉼표를 필드 구분 기호로 사용하며 도구는 필요에 따라 내용을 이스케이프하고 인용합니다.
답변2
Ruby가 설치되어 있는 경우:
ruby -rcsv -e '
rdr = CSV.new(File.new(ARGV.shift), col_sep: "|")
wtr = CSV.new($stdout)
rdr.each {|row| wtr << row}
' file.csv
India,Andhra,"asd,ged,ijn",telangana,41657,"hgjd,dfef,edf",dfd