bash LINUXで日付をDD-MM-YYYYからYYYY-MM-DD形式に変換する

bash LINUXで日付をDD-MM-YYYYからYYYY-MM-DD形式に変換する

想像する:

ファイルの日付値をデフォルトでDD-MM-YYYY形式の変数として抽出しています。システム日付からこの日付を減算する必要があります。両方の日付がDD-MM-YYYY形式の場合、減算結果は無効です。だから私はGoogleからいくつかの内容を読み、両方の日付をYYYY-MM-DD形式で指定することにしました。これにより、減算後に正しい値が提供されます。システム日付形式をYYYY-MM-DDとして正常に指定しましたが、ファイルから取得した日付をYYYY-MM-DD形式に変換する際に問題があります。

次の解決策は1桁の日付に適用されます。

$ date -d $(sed "s/-/\//g" <<< '9-2-1832') +%Y-%m-%d
Output : 1832-09-02

しかし、日付を次のように2桁に変換しようとすると、次のようになります。

$ date -d $(sed "s/-/\//g" <<< '19-07-2021') +%Y-%m-%d

私は出力を得る

Invalid date '19/07/2021'

どこ:

19 - is Date of a month
07 - is Month i.e. July in this case.
2021 - is Year

希望の出力は ->2021-07-19

私は日付バージョンがdate(GNU coreutils)8.22のRH Linuxで作業しています。

上記の問題に対する解決策を提供するのに役立ちます。

ベストアンサー1

あなたの場合、awkおそらくより良いアプローチになります。

$ awk -F'-' '{printf("%04d-%02d-%02d\n",$3,$2,$1)}' <<< '19-07-2021'
2021-07-19

おすすめ記事