web-dev-qa-db-ja.com

bashを使用してCSVの最初と2番目の列を交換する

私はbashを使用しています。おおよそ次のような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ステートメントで、適切に切り替えるために何が欠けていますか?

3
Dave

どうぞ :

  awk ' FS="," { print $2 "," $1 } ' sampleData.csv 
4
Joe M

デフォルトの区切り文字はスペース/タブだからです。カンマではありません。元のコードを取り、-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
$
6
steve