sed、regex、windows cmd、またはその両方で、csv ファイルの行を恐ろしい日時実装で再フォーマットして、使用可能なものにする方法がわかりません。
与えられた:
Name,Equip1_SA-TEMP -- ASample,7/8/13 0:00,55.10
Name,Equip1_SA-TEMP -- ASample,7/8/13 0:10,55.50
たとえば、(7/8/13 0:00) の日時部分を「検索」し、SQL のような DATETIME に再フォーマットする必要があります。
Name,Equip1_SA-TEMP -- ASample,2013-07-08 00:00:00,55.10
Name,Equip1_SA-TEMP -- ASample,2013-07-08 00:10:00,55.50
ご覧のとおり、これには月、日、時間の前に「0」を追加し、次に秒を表す :00 を追加する必要がある場合があります。
日時領域を取得するのは次のようなものです。
sed -E 's#^([^/]+)/([^/]+)/([0-9]+)
、しかし、私は最初に「それに到達する」ことができません...その2番目の「、」を最初に見つける必要がありますか?
常に 1 行に 4 つのフィールドがあります。
Name,SomeEquipmentId,DateTime,Value.
これを取得するためのsed + windowsコマンドの適切な組み合わせはありますか? それとも、これをすべて行うために高レベルのコードを書いたほうがよいのでしょうか?
awk で更新: 次のようないくつかのコマンドを試しました: awk -F 、 "{split($3,a,[:blank:]); vdate=a[1]; tdate=a[2]; print vdate}" ファイル.csv
しかし、[ char で構文エラーが発生します。エスケープしてもうまくいきません。\""%%3s を試しましたが、それでも文字列全体が返されます (例: 7/18/13 00:10)。それらを配列に分割しようとする代わりに、使用するより良い awk 文字列コマンドはありますか?