以下はファイルのフォーマットです。日付形式の最初の2列をエポック形式に変換するのを手伝ってくれる人はいますか?
2018-01-02 05:44:00,2018-01-02 05:59:00,1,702058496,0,0,0,0,0,0,0,0
2018-01-02 05:44:00,2018-01-02 05:59:00,1,702058496,2,0,0,0,0,0,0,0
2018-01-02 05:44:00,2018-01-02 05:59:00,1,702058496,3,332,0,0,0,332,0,0
2018-01-02 05:44:00,2018-01-02 05:59:00,1,702058496,4,0,0,0,0,0,0,0
2018-01-02 05:44:00,2018-01-02 05:59:00,1,702062592,0,0,0,0,0,0,0,0
2018-01-02 05:44:00,2018-01-02 05:59:00,1,702062592,2,0,0,0,0,919,0,0
2018-01-02 05:44:00,2018-01-02 05:59:00,1,702062592,3,919,0,0,0,0,0,0
2018-01-02 05:44:00,2018-01-02 05:59:00,1,702062592,4,0,0,0,0,0,0,0
2018-01-02 05:44:00,2018-01-02 05:59:00,1,702066688,0,0,0,0,0,0,0,0
2018-01-02 05:44:00,2018-01-02 05:59:00,1,702066688,2,0,0,0,0,0,0,0
2018-01-02 05:44:00,2018-01-02 05:59:00,1,702066688,3,0,0,0,0,919,0,0
2018-01-02 05:44:00,2018-01-02 05:59:00,1,702066688,4,0,0,0,0,0,0,0
2018-01-02 10:44:00,2018-01-02 10:59:00,1,702058496,0,0,0,0,0,0,0,0
2018-01-02 10:44:00,2018-01-02 10:59:00,1,702058496,2,0,0,0,0,0,0,0
次のコマンドで試してみました。
aa = cat ATMIF.180102-0615 |grep -|awk -F ',' '{print $1}'
; for i in cat ATMIF.180102-0615 |grep -|awk -F ',' '{print $1}'
; do date -d "$ aa" "+%s"; 完了
しかし、次のようにエラーが発生します:日付:無効な日付 2018-01-02 05:44:00\n2018-01-02 05:44:00\n2018-01-02 05:44:00\n2018-01-02 05:44:00\n2018-01-02 05:44:00\n2018-01-02 05:44:00\n2018-01-02 05:44:00\n2018-01-02 05:44:00\n2018-01-02 05:44:00\n2018-01-02 05:44:00\n2018-01-02 05:44:00\n2018-01-02 05:44:00\n2018-01-02 10:44:00\n2018-01-02 10:44:00\n2018-01-02 10:44:00\n2018-01-02 10:44:00\n2018-01-02 10:44:00\n2018-01-02 10:44:00\n2018-01-02 10:44:00\n2018-01-02 10:44:00\n2018-01-02 10:44:00\n2018-01-02 10:44:00\n2018-01-02 10:44:00\n2018-01-02 10:44:00' date: invalid date
2018-01-02 05:44:00 \ n2018-01-02 05:44:00 \ n2018-01-02 05:44:00 \ n2018-01-02 05:44:00 \ n2018-01-02 05 :44:00 \ n2018-01-02 05:44:00 \ n2018-01-02 05:44:00 \ n2018-01-02 05:44:00 \ n2018-01-02 05:44:00 \ n2018 -01-02 05:44:00 \ n2018-01-02 05:44:00 \ n2018-01-02 05:44:00 \ n2018-01-02 10:44:00 \ n2018-01-02 10: 44:00 \ n2018-01-02 10:44:00 \ n2018-01-02 10:44:00 \ n2018-01-02 10:44:00 \ n2018-01-02 10:44:00 \ n2018- 01-02 10:44:00 \ n2018-01-02 10:44:00 \ n2018-01-02 10:44:00 \ n2018-01-02 10:44:00 \ n2018-01-02 10:44 :00 \ n2018-01-02 10:44:00 '日付:無効な日付 `2018-01-02 05:44:00 \ n2018-01-02 05:44:00 \ n2018-01-02 05:44: 00 \ n2018-01-02 05:44:00 \ n2018-01-02 05:44:00 \ n2018-01-02 05:44:00 \ n2018-01-02 05:44:00 \ n2018-01- 02 05:44:00 \ n2018-01-02 05:44:00 \ n2018-01-02 05:44:00 \ n2018-01-02 05:44:00 \ n2018-01-02 05:44:00 \ n2018-01-02 10:44:00 \ n2018-01-02 10:44:00 \ n2018-01-02 10:44:00 \ n2018-01-02 10:44:00 \ n2018-01-02 10:44:00 \ n2018-01-02 10:44:00 \ n2018-01-02 10:44:00 \ n2018-01-02 10:44:00 \ n2018-01- 02 10:44:00 \ n2018-01-02 10:44:00 \ n2018-01-02 10:44:00 \ n2018-01-02 10:44:00 '
これは、データが次の場所にあると仮定して、それを行います。
IFS=,;while read line; do
ff=($line);
ff[0]=`date -d "${ff[0]}" +%s`;
ff[1]=`date -d "${ff[1]}" +%s`;
echo "${ff[*]}";
done < file.in > file.out
注:発信元の形式に応じて、dateコマンドに「UTC」を追加する必要がある場合があります。
コメントで求められたとおりにインプレースで実行するには、すべてのファイルをループする必要があります。たとえば、findコマンドを使用して/ mypath / to-files /内のすべての.csvファイルを再帰的に照合します。
for file in $(find /mypath/to-files -name "*.csv"); do
cp $file /tmp/tmp.csv
IFS=,;while read line; do
ff=($line);
ff[0]=`date -d "${ff[0]}" +%s`;
ff[1]=`date -d "${ff[1]}" +%s`;
echo "${ff[*]}";
done < /tmp/tmp.csv > $file
done
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加