LinuxコマンドでCSVファイルを作成する
今回はCSVファイルをLinuxコマンドを使って作成しようと思います。
CSVファイルは、PHPやJavaScriptでも作って出力できると思いますが、今回は既存のExcel資料からCSVファイルを作りたいと思います。
単純にマクロを作ってCSVにすればいいじゃないかと思いますが、それだとマクロの学習時間が自分の場合は高くなりそうだったので、今回は、割と好きなLinuxコマンドを使って挑戦しようと思います。
やりたいこととしては、EC-CUBEに取引先から共有していただいたExcelファイルの内容を反映したいが目的になります。
A.xlsxのファイルを読み込んでB.csvのファイルを作成する
#!/bin/bash
# A.xlsxをCSV形式に変換
xlsx2csv A.xlsx a_temp.csv
# awkを使用して必要な列を取得・加工し、B.csvに出力
awk -F, 'NR==1 {print "id,name,company"} NR>1 {print $1","$2$3","$4}' a_temp.csv > B.csv
# 一時ファイルを削除
rm a_temp.csv
printでヘッダーを定義してます。
自分はMacを使っているので「brew install xlsx2csv」でインストールをしようとしましたがダメだったのでPython3でインストールしました。
「pip3 install xlsx2csv」
そのあとでパスを追加しました。
「export PATH="$PATH:/Users/〔ユーザー名〕/Library/Python/3.9/bin"」