CSV에서 큰따옴표를 제거하는 방법

CSV에서 큰따옴표를 제거하는 방법

다음과 같은 CSV 파일이 있습니다.

a.csv
"1,2,3,4,9"
"1,2,3,6,24"
"1,2,6,8,28"
"1,2,4,6,30"

나는 다음과 같은 것을 원한다

b.csv
1,2,3,4,9
1,2,3,6,24
1,2,6,8,28
1,2,4,6,30

나는 시도했지만 awk '{split($0,a,"\"");도움이 되지 않았습니다. 도움을 주시면 감사하겠습니다.

답변1

가장 간단한 방법:

tr -d '"' <a.csv >b.csv

답변2

gsub()전역 교체를 위한 함수 사용

$ awk '{gsub(/"/,"")};1' input.csv                    
1,2,3,4,9
1,2,3,6,24
1,2,6,8,28
1,2,4,6,30

출력을 새 파일로 보내려면 >쉘 연산자를 사용하십시오.

awk '{gsub(/"/,"")};1' input.csv > output.csv

배열로 분할하는 것도 가능합니다. 필수는 아니지만 다음과 같이 사용할 수 있습니다.

$ awk '{split($0,a,/"/); print a[2]}' input.csv       
1,2,3,4,9
1,2,3,6,24
1,2,6,8,28
1,2,4,6,30

1,2,3,4이 특정 질문에서 일반적인 패턴은 따옴표가 줄의 시작과 끝에 있다는 것입니다. 즉, 필드 1은 null, 필드 2는 null , 필드 3은 필드 구분 기호로 생각할 수도 있습니다. 또한 null입니다. 그래서 우리는 이렇게 할 수 있습니다:

awk -F '"' '{print $2}' input.csv

전체 줄의 하위 문자열을 꺼낼 수도 있습니다.

awk '{print substr($0,2,length()-2)}' quoted.csv

첫 번째 문자와 마지막 문자를 제거하는 방법에 대해 말하면 다음과 같습니다.이것에 대한 stackoverflow의 전체 기사가 있습니다.sedPOSIX 쉘 과 같은 다른 도구와 함께 사용됩니다.

답변3

또 다른 해결책 sed:

sed -e 's/"//g' a.csv > b.csv

답변4

이 명령을 사용할 수 있습니다

awk '{gsub("\"",RS);print}' a.csv >  b.csv

관련 정보