2013-04-24 57 views
0

我在檢查我的輸入參數是否爲YYYYMMDDNYYYYMM如何檢查LINUX中的日期格式

如果我輸入的日期是在YYYYMMDDN格式,那麼我需要驗證它,並把它轉換成MMNYY格式 如果我輸入的日期是在YYYYMM格式,那麼我需要驗證它,並把它轉換成YYMM格式。

請讓我知道如何做到這一點。

+4

當你想 「幫助」 的意思是 「寫我的東西」 - 這是行不通的所以。如果您遇到問題,請自行嘗試並回來,因爲某些符號無法按預期工作。 – akluth 2013-04-24 15:33:36

+1

什麼是'YYYYMMDDN'格式? – anubhava 2013-04-24 15:34:20

+0

YearmonthDateWeekNum – Teja 2013-04-24 15:35:56

回答

0

下面將YYYYMMDDNYYYYMM格式的日期的工作:

dt='201304203' 
[[ $dt =~ ^[0-9]{6}([0-9]{3})? ]] && echo "matched" 

不過請注意,這不會驗證您的日期。

備選地用sed:

echo $dt | sed -n '/^[0-9]\{6\}[0-9]\{0,3\}/p' 

備選#2使用grep:

echo $dt | grep -qP '^[0-9]{6}[0-9]{0,3}$' 

然後檢查返回代碼$?(1表示失敗和0表示匹配的)

更新:

對於YYYYMMDDN => MMNYY:

echo '201304203' | sed -r 's/^[0-9]{2}([0-9]{2})([0-9]{2})[0-9]{2}([0-9])$/\2\3\1/' 

對於YYYYMM => YYMM:

echo '201304' | sed -r 's/^[0-9]{2}([0-9]{2})([0-9]{2})$/\1\2/' 
+0

我得到語法錯誤。 – Teja 2013-04-24 15:46:16

+0

這隻會在bash中工作。你有哪一種bash? – anubhava 2013-04-24 15:47:26

+0

我正在Linux上執行它。 – Teja 2013-04-24 15:51:44