2つの列csvに出力するための端末コマンド

2つの列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は1つの列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"

関連情報