次の内容を含む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
コマンドに切り替えます。
答え2
$ awk 'BEGIN { FS=","; OFS=",\t" };
FNR == 1 { print $1,$2,"col3","col4" };
FNR > 1 { print $1,$2,"\t",$3 }' file.csv
col1, col2, col3, col4
1, 1, , 1
2, 2, , 2
3, 3, , 3
4, 4, , 4