큰 .csv 파일의 처음 두 열 참조

큰 .csv 파일의 처음 두 열 참조

약 2,500만 행이 포함된 대용량 CSV 파일이 있습니다.256목록. CSV 파일의 필드 구분 기호는 ~문자입니다.

다음과 같이 데이터의 처음 두 열을 바꾸고 싶습니다.

From : data1~data2~data3..................................
To   : "data1"~"data2"~data3................................

현재 사용하고 있지만 awk다음과 같습니다.

cat file | awk -F "~" '{print "\""$1"\"""\""$2"\"~"$3"~"$4"~"...................}'

예를 들어 awk에 256개의 열을 입력합니다.$4"~"$5"~"$6"~".....$256"~"

이것을 코딩하는 다른 더 좋은 방법이 있습니까?

답변1

아니요, 256개 필드를 모두 지정할 필요는 없습니다. 첫 번째 열과 두 번째 열을 변경하여 다음을 수행한 다음 파일을 개별적으로 읽는 데 while 을 사용 하지 말고 print함께 수행하세요.OFS='~'catawkawk

awk -F'~' '{$1="\""$1"\""; $2="\""$2"\""; print}' OFS='~' infile

마지막 두 필드를 변경합니다.

awk -F'~' '{$(NF-1)="\""$(NF-1)"\""; $NF="\""$NF"\""; print}' OFS='~' infile

답변2

보통 sed쓰다

sed 's/[^~]*/"&"/;s//"&"/2'

하지만 대용량 파일을 언급하셨으니 이는훨씬 더 빨리위의 솔루션이나 버전보다 awk:

sed 's/\(^[^~]*\)~\([^~]*\)/"\1"~"\2"/'

또는 확장 정규식을 사용하여 읽는 것이 더 쉬울 수도 있습니다.

sed -E 's/(^[^~]*)~([^~]*)/"\1"~"\2"/'

관련 정보