バッシュを使っています。おおよそ次の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