dd/mm/yyyy hh:mm:ss 形式の日付を含むテキストファイルの列を yy-mm-dd hh:mm:ss に動的に変換しようとしています。次のコマンドは機能しますが、必要に応じてyy-mm-dd形式ではなくyy-dd-mm形式で出力を提供します。
echo $(date -d "8/11/2018 06:20:57 AM" "+%y-%m-%d %H:%M:%S")
出力:
18-08-11 06:20:57
また、次のように最初の数字を日ではなく月として処理するため、12より大きい日付では機能しません。
echo $(date -d "28/11/2018 06:20:57 AM" "+%y-%m-%d %H:%M:%S")
出力:
date: invalid date ‘28/11/2018 06:20:57 AM’
動作させる方法はありますか?
答え1
まず、前処理することをお勧めします。私の最高のチャンスはsed
echo "28/11/2018 06:20:57 PM" | sed -E "s/([0-9]+)\/([0-9]+)\/([0-9]+) ([0-9]+):([0-9]+):([0-9]+) ([APM]{2})/\3\/\2\/\1 \4:\5:\6 \7/g" | xargs -I II date -d II "+%y-%m-%d %H:%M:%S"