web-dev-qa-db-ja.com

新しい列を.csvファイルに挿入するにはどうすればよいですか?

データの例:

"Monday","12345","Friday" 

上記のファイルで、12345から金曜日の間に新しい列を追加します。

どうやってやるの ?

5
manivannan K N

重い楽器(sedawkなど)を含まないようにするには:

paste -d',' <(cut -d',' -f-2 file) column.file <(cut -d',' -f3- file)

これは、追加する列がファイルcolumn.fileに保存されていることを前提としています。

6
Costas

あなたのデータがあなたが示すほど単純であると仮定すると、あなたは行うことができます

awk -F, -v OFS=, '{k=$3; $3="\"new text\""; $4=k}1' file

または、

Perl -F, -lane 's/$F[1]/$F[1],"new text"/; print' file

ただし、次のようなネストされたコンマを含む可能性のあるデータでは失敗します。

"foo", "bar,baz", "bar" 

上記は有効なcsvファイルですが、これらのソリューションは3ではなく4つのフィールドを持つものとして扱います。データにそのようなケースが含まれる可能性がある場合は、代わりに適切なcsvパーサーを使用する必要があります。

2
terdon

私は同じ問題を抱えていましたが、空白のフィールドが必要だったので、切り取り/貼り付けの答えは私にとってはうまくいきませんでしたので、これは私にとってうまくいきました:

  1. 挿入するファイルの行数を調べます。

    wc -l file.csv
    
  2. だから1.は30を与え、次にbashループを使用してフィールド3と4の間にnullフィールドを挿入します。

    paste -d, <(cut -d, -f-3 file.csv) <(for i in `seq 1 30`; do echo; done) <(cut -d, -f4- file.csv) > fileNew.csv
    
0
Richard_xd