Linux CSVファイルに格納されている日付がYYMMDDHHMMSS形式であることを判定する
input_date.csv
20151123181100,20151123181101
20151123181102,20151123181103
20151123181104,20151123181105
上記のようなCSVファイルに記載されている日付文字列がYYMMDDHHMMSS
形式の日付になっているかどうかを、カンマ区切りごとに調べるシェルスクリプトを作成したいと思っています。
ネット等を参照し、いくつか作ってみましたがうまくいかずハマっております。
自作したシェルスクリプトを下記に記載しております。別のアプローチの仕方等も含めて、お力添えよろしくお願いいたします。
↓自作没シェルスクリプト
#!/bin/sh
date_file=~/input_date.csv
##試しに1列目だけの日付文字列を取り出して比較してみる。
while read line; do
colm1=`echo ${line} | cut -d "," -f 1`
echo "${colm1}" ##echoしてみると、ここまでは意図通り動いてくれてるようです。
if [ "`date +%Y%m%d%H%M%S -d ${colm1}`" == ${colm1} ]; then
echo "${colm1} is ok"
else
echo "正しい日付形式ではありません。"
exit 1
fi
done < ${date_file}
実行結果としては、正しい日付形式(真)で比較していてもelseの処理に移ってしまいます。
colm1で渡している文字列が、date +%Y%m%d%H%M%S
のフォーマットにうまく変換されていなさそうですが、そこでもはまっているため、もっとシンプルなやり方がないかと模索しています。
→別質問版で[date +%Y%m%d%H%M%S -d 日付]
の件で質問版を立てていましたが、この件の解決に至らずです・・・。