2011-12-24 8 views

答えて

1

$ echo 12-24-11 13:37 | sed 's#^\([0-9\-]\{5\}\)-\([0-9]\{2\}\)#\2-\1#' 
11-12-24 13:37 
0

これは正しい方向にあなたを指してはならない - http://www.cyberciti.biz/faq/linux-unix-formatting-dates-for-display/

+0

私の知る限り短い正規表現で1を使用する場合がありますが、 'date'は、ちょうど現在の日付を印刷することができ、または*を設定します新しい日付。 OPは、既存の日付を書式設定する必要があります。 – phihag

+0

@phihag OPの日付を使用した場合、彼の日付の呼び出しにはすでに+(%m-%d-%Yを生成する)か、入力は "Sat 12月24日"(%m-% d-%Y)。 –

+1

@phihag:技術的に、 'date' *は通常任意の日付を表示できます。 GNUの日付はこの目的のために '-d'フラグを使います.BSDの日付は' -r'と '-v'を使います。 – GreyCat

1

なし必要sedの。 *

#!/bin/sh 

input="12-24-11 13:37"; 

month="${input%%-*}"; 
input="${input#*-}"; 

day="${input%%-*}"; 
input="${input#*-}"; 

year="${input%% *}"; 
input="${input#* }"; 

echo "$year-$month-$day $input"; 

しかし、あなたは外部ツールを使用したいならば、同様

echo 12-24-11 13:37 | perl -pe 's/(.+)-(.+) /$2-$1 /' 
+0

私はperlバージョンで '$ 2'と' $ 1'を切り替えました。それ以外はNOPです。 – phihag

関連する問題