2014-04-03 29 views
1

我想修改下面的語句來提取月份,以及天:提取月份和日期從Linux「date」命令

testdate = $(日期-d「2日」 +% d | sed的 'S/0([1-9])/ \ 1 /')

現在它只是提取一天......

我目前使用Google如何SED的作品。看起來像正在使用的正則表達式,但...我想我會檢查與確定的論壇。

謝謝。

編輯1

現在我有:

testdate=$(date -d "2 days" "+%b %_d %Y") 

這是偉大的......當一天的前導零被剝離出來時除外。然後我最終的月份和日期 例如,之間兩個空格2014年4月29日,我得到:

Apr 29 2014 

這是偉大的。但對於2014年5月1日,我得到:

May 1, 2014 

其中「May」和「1」之間有雙倍空間。我想我可以分兩步做...通過執行日期命令,然後sed來查找和替換雙空格。 只是想知道是否有辦法在一個命令中完成所有操作。 謝謝。

回答

2

要閱讀的月和日到shell變量(假定慶典/ KSH/zsh中)

read month day < <(date -d "2 days" "+%m %d") 

如果您打算做算術上這些值應該被視爲八進制數字,但是無效八進制數字0809。如果你想去掉前導零,使用"+%_m %_d"


使用read,外殼照顧多餘的空白,爲您:

read mon day year < <(date -d "2 days" "+%b %_d %Y") 
testdate="$mon $day $year" 

如果你不想使用臨時瓦爾:

testdate="Apr 5 2014"  # $(date -d "2 days" "+%b %_d %Y") 
testdate=${testdate///} # globally replace 2 spaces with 1 space 
echo "$testdate" 
+0

glenn,你如何改變你的代碼以防止在幾天和幾天之間導致零的天數被剝離時出現雙空間?除此之外,你的代碼是完美的! – dot

+0

請參閱我的編輯1,我試圖解釋我在做什麼。謝謝! – dot

+0

爲什麼月份需要前導零被剝離,如''+%_ m%_d「'?另外,或許將'/ /'用作'read'的替代方案是一種想法,而不是使用臨時變量的替代方案。 – user66001

5

date接受一個FORMAT arg應該在這裏使用。 sed是沒有必要的:

date +%d.%m. 

輸出:

03.04. 

在歐洲時間格式。如果你想在本月的名字印使用

date +'%d. %B' 

輸出:

03. April 
+0

hek2mgl - 在答案中使用'<! - language-all:lang-none - >'來防止突出顯示「April」。 – user66001

2

對於日期格式%d將只打印了一天。除非您在格式中指定,否則不太可能提取月份。

指定獲取月份的格式。

%b  locale's abbreviated month name (e.g., Jan) 
    %B  locale's full month name (e.g., January) 
    %m  month (01..12) 

例如:

$ date -d "2 days" +%d/%b 
05/Apr 
$ date -d "2 days" +%d/%B 
05/April 
$ date -d "2 days" +%d/%m 
05/04 
+0

是啊......我現在看到......有道理。謝謝。我剛剛開始使用bash編程,直到現在甚至沒有注意到%d。 – dot

+0

你能看看我的編輯1嗎? – dot

+0

@dot我不確定你的問題是什麼。我已經添加了幾個例子。如果您有任何疑問,請告訴我。 – devnull

0

似乎還有一個更簡單的方法來提取[中]月和日,從[中] Linux的「date」命令,然後所有以前的答案。

$ date --help

By default, date pads numeric fields with zeroes. 
    The following optional flags may follow `%': 

    - (hyphen) do not pad the field 

這給了我們以下,無需使用sedread刪除任何類型的填充:

testdate=$(date -d "3 days" "+%b %-d %Y")days調整,顯示個位數的日數,從今天起)

並輸出如下:

$ echo $testdate 
Sep 1 2014 
相關問題