CSVファイルの最初の列と2番目の列を置き換える

CSVファイルの最初の列と2番目の列を置き換える

バッシュを使っています。おおよそ次の2つのデータ列を含むCSVファイルがあります。

 num_logins,day
 253,2016-07-01
 127,2016-07-02

最初の列と2番目の列を変更したい(日付列を最初の列にする)。だから私はこれを試しました

awk ' { t = $1; $1 = $2; $2 = t; print; } ' /tmp/2016_logins.csv 

ただし、結果の出力は同じです。正しく切り替えるには、上記のawk文で何を見逃していますか?

答え1

ここにあります:

awk -F, '{ print $2 "," $1 }' sampleData.csv 

答え2

デフォルトの区切り文字はスペース/タブであるためです。カンマではありません。元のコードをインポートして-F,ソリューションを追加します。

$ awk -F, ' { t = $1; $1 = $2; $2 = t; print; } ' /tmp/2016_logins.csv
day num_logins
2016-07-01  253
2016-07-02  127
$

{$0=$2" "$1}1同じ結果を得るには、もう一度削除してください。

$ awk -F, '{$0=$2" "$1}1' /tmp/2016_logins.csv
day num_logins
2016-07-01  253
2016-07-02  127
$

答え3

この答えはxsv代わりにawk列が多い場合に便利です。

xsv cat columns <(xsv select 1-4,6- input.csv) <(xsv select 5 input.csv) > output.csv

関連情報