cat、sed、awk、またはcutを使用してcsvファイルの特定の場所に列を追加する方法は?

cat、sed、awk、またはcutを使用してcsvファイルの特定の場所に列を追加する方法は?

次の内容を含むcsvファイルがあります。

col1, col2, col5
1,    1,    1
2,    2,    2
3,    3,    3
4,    4,    4

ヘッダーを含むがNULL値を含むファイルの3番目の場所に列を追加する必要があります。

col1, col2, col3, col4
1,    1,        ,   1
2,    2,        ,   2
3,    3,        ,   3
4,    4,        ,   4

cat、sed、awk、cutなどのLinuxコマンドのいずれかを使用してこれを行う方法はありますか?

私はcutを使用して列ごとにファイルを変更できることを知っていますcut -d , -f1,2,3 file1 > file2。しかし、カスタム列を追加するオプションはないようです。

どんな助けでも大変感謝します。

ベストアンサー1

sed結果を得るためのコマンドは次のとおりです。

sed '1s/\(.*,\)\([^,]*\)$/\1col3,\2/;
     2,$s/\(.*,\)\([^,]*\)$/\1,\2/' file.csv

,これは行の最後のものを見つけて次に置き換えます。

  • col3,最初の行に
  • ,他のすべての行では、

このコマンドは目的の出力をに印刷しますstdout。ファイルをその場で編集するには、上記の-iコマンドに切り替えます。

おすすめ記事