私はLinux/Centos7を使用しています。マージするCSVファイルが複数あり、このコマンドを使用してマージしています。
cat *csv > all.csv
ただし、最初の列には連続した数字が含まれているため、マージして順番に番号を付け直す必要があります。
==> 1.csv <==
1,bob,date,body
2,joe,date,body
3,ann,date,body
==> 2.csv <==
1,lisa,date,body
2,paul,date,body
3,mike,date,body
結果では、最初の列の番号を再編成したいと思います。
==> output.csv <==
1,bob,date,body
2,joe,date,body
3,ann,date,body
4,lisa,date,body
5,paul,date,body
6,mike,date,body
定期的なマージを実行するときにこれがあり、このマージされたファイルの番号を再度付けることができる場合に機能します。
1,bob,date,body
2,joe,date,body
3,ann,date,body
1,lisa,date,body
2,paul,date,body
3,mike,date,body
答え1
このコマンドはあなたが望むことをします
cat *.csv | cut --complement -d',' -f1 |sed -e 's/^/,/' |nl |sed -e "s/ //g"|sed -e "s/\\t//g" >all.csv
cut --complement -d',' -f1
最初の列を切り取ると取得できます。
bob,date,body
joe,date,body
ann,date,body
lisa,date,body
paul,date,body
mike,date,body
sed -e 's/^/,/'
各行の先頭に 、 を追加します。
,bob,date,body
,joe,date,body
nl は各行の先頭に数字を追加します。
1 ,bob,date,body
2 ,joe,date,body
3 ,ann,date,body
4 ,lisa,date,body
sed -e "s/ //g"|sed -e "s/\\t//g"
数字とカンマ(、)の間のスペースを削除します。