ある日付形式を別の日付形式に変換するには?

ある日付形式を別の日付形式に変換するには?

日付形式に問題があります。ある形式から別の形式に、またはその逆に変更したいと思います。私の日付形式は次のとおりです。

フォーマット1

YYYY-MM-DD

フォーマット2

MM/DD/YYYY

format1をformat2に、format2をformat1に変更したいと思います。

答え1

これを行うには、GNU "date"を使用してください。また、他の形式間でも変換されます(date --help形式リストを参照)。

$ date -d 2013-07-05 +%m/%d/%Y
07/05/2013
$ date -d 07/05/2013 +%F
2013-07-05

答え2

変換する必要があるテキスト形式の日付があるとします。

echo '2013-12-13' | awk -v FS=- -v OFS=/ '{print $2,$3,$1}'

その逆に

echo '12/13/2013' | awk -v FS=/ -v OFS=- '{print $3,$1,$2}'

答え3

$ echo YYYY-MM-DD | { IFS=- read y m d && echo "$m/$d/$y"; }
MM/DD/YYYY

ファイルに次の日付がたくさん含まれている場合は、1行に1つずつ:

awk -F- -vOFS=/ '{print $2,$3,$1}' < that-file

答え4

sedを次のように使用してください。

$ echo '2013-12-13' | sed -r 's/([[:digit:]]{2,4})-([[:digit:]]{1,2})-([[:digit:]]{1,2})/\2\/\3\/\1/g'
12/13/2013
$ echo '12/13/2013' | sed -r 's/([[:digit:]]{1,2})\/([[:digit:]]{1,2})\/([[:digit:]]{2,4})/\3-\1-\2/g'
2013-12-13

関連情報