こんにちは.最近はパソコンと向かい合っていることが多いです,綿谷雫です.
今日は退屈な作業をプログラムにして効率化を図ったのでまとめます.
退屈な作業の内容
ある画像データがcsv形式でいっぱい吐き出される.吐き出されたcsv形式のデータをimageJで開きたいが,imageJは数値だけのcsvデータしか受け付けてくれないので,最初の5行を消したデータを用意する必要がある.とはいえ消す行にも必要な情報があるので別名で保存したい.
以前やっていたこと
csvファイルをマウスでクリックしてExcelで開く.開いたら1~5行選択して,別名で保存する.
やろうと思ったきっかけ
この本を読んでいたら毎回やる作業はスクリプトを書け! 的な圧力を感じたため.
作った
次のようなファイルを作成しました.名前はcsv4imageJです.
for file in *.csv do sed -n 4p $file sed '1,5d' $file > ${file%.*}_del.dcsv done for file in *.dcsv do mv $file ${file%.*}.csv echo ${file%.*}'.csv has been made!' done
このファイルをターミナルで次のようにchange mode をして命令として使えるようにしました.
chmod u+x csv4imageJ
ターミナルで
./csv4imageJ
と打つとそのディレクトリのcsvファイルが全て処理されimageJが飲みやすいデータが出てきます.
説明
for file in *.csv do done
.csv という名前の全てのファイルについてdo からdoneまでの処理を行います.doからdoneの中で使われるファイルの名前は$fileとなります(ドルマークがつく).
sed -n 4p $file sed '1,5d' $file > ${file%.*}_del.dcsv
sed -n 4p $file でファイルの4行目をみています.この情報はみておきたいので.
sed '1,5d' $file > でファイルの中の1から5行目を削除(delete)したものを>の先に渡しています, ${file%.*}_del.dcsvで新しく作ったファイルの名前を某.csvとかから某_del.dcsvという名前に設定しています.無限ループが怖いので一番最後を.csvにするのはやめました,
for file in *.dcsv do mv $file ${file%.*}.csv echo ${file%.*}'.csv has been made!' done
.dcsv で終わっているファイルの名前を.csvに直して,どんな名前のファイルができたか表示させています.これで確認はばっちりです.
感想
Excelを開かなくてよくなっただけで快適度が増しました.これからも精進していきたいです