큰따옴표로 묶인 필드가 있는 거대한(GiB의 절반 정도, 일반 텍스트 편집기를 사용하는 것은 불가능함) CSV 파일이 있지만 "abc","def"
따옴표가 없는 파일이 필요합니다(이로 인해 파일의 일관성이 깨지지 않을 것이라고 확신합니다. 쉼표 값 내에서는 내부적으로 사용되지 않습니다.)
(공백 없이) 모든 따옴표를 제거하려면 어떻게 해야 합니까?
답변1
tr
다음을 수행할 수 있습니다.
tr -d \" < infile > outfile
다음을 사용할 수도 있습니다 sed
.
sed 's/"//g' < infile > outfile
답변2
다른 버전sed주문하다:
sed -i s/\"//g file.txt
sed
에스트레메편집하다이토르-i
나n-place (파일을 제자리에서 편집)s
이것에스대체 명령/replacement_from_reg_exp/replacement_to_text/
성명\"
백슬래시가 앞에 오는 따옴표((replacement_from_reg_exp)- 슬래시 구분 기호 사이의 빈 문자열(텍스트로 바꾸기)
g
G전역(한 줄의 모든 항목을 바꾸는 데 사용됨)
file.txt
파일 이름
답변3
CSV를 지원하는 라이브러리를 사용하여 데이터를 읽는 경우 큰따옴표를 제거할 필요가 없습니다. 이 답변의 나머지 부분에서는 나중에 데이터를 더 쉽게 구문 분석할 수 있는 방법을 사용하는 경우 일반 CSV 파일에서 불필요한 큰따옴표를 제거하는 방법을 보여줍니다.
밀러( mlr
)는 CSV 데이터를 읽고 이를 다시 출력하는 데 사용할 수 있습니다.
mlr --csv cat file
( -I
"내부" 편집에는 with를 사용합니다.)
기본적으로 Miller는 쉼표, 따옴표 또는 개행 문자가 포함된 필드와 같이 인용이 필요한 필드만 인용합니다.
같은 방법으로 csvformat
부터csvkit마찬가지로 실제로 인용해야 하는 필드만 기본적으로 참조됩니다.
csvformat file
유틸리티는 csvformat
"내부" 편집을 수행할 수 없으므로 출력을 새 이름으로 리디렉션해야 합니다.