2011-12-24 39 views

回答

1

sed的救援:

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

據我所知,'date'可以只打印當前日期,或*設置*一個新的約會。 OP想要格式化現有的日期。 – phihag 2011-12-24 12:54:37

+0

@phihag如果OP使用日期,那麼他的日期調用將包含+(生成%m-%d-%Y),或者他的輸入將類似於「Sat Dec 24」(不是%m-% d-%Y):) – 2011-12-24 13:00:00

+1

@php:從技術上講,'date' * *通常可以打印任意日期。 GNU日期爲此使用'-d'標誌,BSD日期使用'-r'和'-v'。 – GreyCat 2011-12-26 01:17:42

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 2011-12-24 13:02:58

相關問題