2016-12-22 13 views
0

UNIXは標準の日付形式 'yyyy-mm-dd'を簡単に処理できることがわかります。 Date関数は、簡単にこの非標準のUNIX日付からの日の抽出

date -d '2016-12-9 00:00:00' '+%d' 
output: 09 

のような一日のフォーム標準の日付形式を抽出することができますしかし、私は非標準の日付形式を使用して同じ結果を取得する方法を把握することはできません。私の日付形式は「mm-dd-yyyy」です。あなたが最も可能性が高いため-dスイッチで使用している

+0

本当に日付を使用しますか?なぜあなたが望むものを抽出できないのですか?あなたは本当の例を与えて、あなたは何を期待できますか? – helloV

+0

@Ali: 'mm-dd-yyyy'形式の入力日付に合わせて答えを修正しました。 – Inian

答えて

1

GNU dateは、カスタムの日付形式を変換するための-f input_fmtでサポートされていFreeBSDバージョンとは異なり、日付のカスタム書式を許可していません。

GNU dateと操作のビットsedで、あなたは何をしようとしているのかを達成することができます。

sedmm-dd-yyyyの入力日付をGNU dateの形式に変換するとわかります。

customDate=$(echo "12-09-2016 00:00:00" | sed 's/\([0-9]\{2\}\)\-\([0-9]\{2\}\)\-\([0-9]\{4\}\) \(.*\)/\3-\1-\2 \4/') 

customDateはあなたが必要な日付を取得するために-dフラグに渡すことができる形式2016-12-09 00:00:00形式で日付を持っています。すなわち

date -d "$customDate" '+%d' 
09 

一時的な変数を使用せずに、これらの日を派手な「ワンライナー」と呼びます。

date -d "$(echo "12-09-2016 00:00:00" | sed 's/\([0-9]\{2\}\)\-\([0-9]\{2\}\)\-\([0-9]\{4\}\) \(.*\)/\3-\1-\2 \4/')" '+%d' 
09 
関連する問題