두 개의 열 csv로 출력하기 위한 터미널 명령

두 개의 열 csv로 출력하기 위한 터미널 명령

일부 계산 기능을 수행하는 터미널에 awk 스크립트가 있습니다.

awk '{ a[$2]++ }END{ for(i in a) printf "%-15s%s\n",i,a[i] }'   
Data_1

추가해서 csv 파일로 출력할 예정이에요

awk '{ a[$2]++ }END{ for(i in a) printf "%-15s%s\n",i,a[i] }'    
Data_1 > Count.csv

하지만 지금 내가 직면한 문제는 위의 awk 스크립트가 출력된다는 것입니다.

Gregor   4
Alexis   15
George   17

csv 파일로 내보낸 후 Excel에서 하나의 열 A에만 이름과 개수가 추가됩니다. 한 열에는 이름을 지정하고 다른 열에는 숫자를 지정하기 위해 터미널에서 csv 명령의 형식을 어떻게 지정합니까? Excel에서 나는 얻고 싶다

A         B
Gregor    4
Alexis    15
George    17

답변1

.csvwith를 사용하는 경우 필드 사이에 쉼표를 추가하여 간단한 유형 형식을 갖도록 해야 합니다 printf.

awk '{ a[$2]++ }END{ for(i in a) printf "%-15s,%s\n",i,a[i] }'
Gregor    ,4
Alexis    ,15
George    ,17

또는 성숙한 .csv 유형

awk '{ a[$2]++ }END{ for(i in a) printf "\"%-15s\",\"%s\"\n",i,a[i] }'
"Gregor    ","4"
"Alexis    ","15"
"George    ","17"

하지만 (간단한 .csv)를 print대신 사용하고 awk쉼표를 추가할 수 있습니다.OFS

awk '{ a[$2]++ }END{ for(i in a) print i,a[i] }' OFS=,
Gregor,4
Alexis,15
George,17

아니면 그냥 현장에서 인쇄하세요.

awk '{ a[$2]++ }END{ for(i in a) print i","a[i] }'
Gregor,4
Alexis,15
George,17

성숙한 .csv 형식의 경우.

awk '{ a[$2]++ }END{ for(i in a) print "\""i"\",\""a[i]"\"" }'
"Gregor","4"
"Alexis","15"
"George","17"

관련 정보