我不得不從1爲01代替了一個月的天9 09.我這樣做,基於下面的代碼AWK - 無法替代的價值
echo "1"|awk '{gsub('1',"01")}1'
echo "2"|awk '{gsub('2',"02")}1'
但現在所有的其他日子一樣10,11正在被替換爲010,011 請指導我如何編寫,以便只有單個數字的天數前綴爲0.謝謝
我不得不從1爲01代替了一個月的天9 09.我這樣做,基於下面的代碼AWK - 無法替代的價值
echo "1"|awk '{gsub('1',"01")}1'
echo "2"|awk '{gsub('2',"02")}1'
但現在所有的其他日子一樣10,11正在被替換爲010,011 請指導我如何編寫,以便只有單個數字的天數前綴爲0.謝謝
你能使用gawk
嗎?
echo "1 2 11 21" | gawk '{gsub(/\y[0-9]\y/,"0&")}1'
01 02 11 21
使用gawk中的單詞邊界正則表達式。從評論更多here
例子:
$ cat file1
Date: Sep 5 2017
Date: Sep 15 2017
Some other line
$ cat file1 | gawk '/^Date:/ { gsub(/\y[0-9]\y/,"0&",$3); sub(/Sep/,"09",$2); print "EndDate "$4$2$3 }'
EndDate 20170905
EndDate 20170915
使它'gsub(/ \ y [0-9] \ y /,「0&」)'可能有用(儘管@Kents'printf'解決方案更好,除非數字嵌入在其他文本中)。 –
非常感謝你的回答@hakan巴巴。不幸的是,它仍然沒有給出必要的答案。我的輸入是日期:2017年9月5日,這是我的代碼if(substr($ 0,5,5)==「Date:」){gawk gsub(/ \ y [0-9] \ y /,「0 &",$3); sub (/ Sep /,「09」,$ 2); print「EndDate」$ 4 $ 2 $ 3>「output.txt」; next}對於當前日期,我得到正確的輸出爲20170905,但是如果我將輸入更改爲Date: 2017年9月15日我的輸出是2017090105 – madsthiru
@madsthiru我用你的例子更新了我的答案,它可以按照我的預期工作 –
最近bash的版本,你可以用
echo {01..12}
輸出
01 02 03 04 05 06 07 08 09 10 11 12
另一種選擇是使用格式說明在seq
。
seq -f "%02g" 12
輸出
01
02
03
04
05
06
07
08
09
10
11
12
** **想什麼'-delimited腳本 '一個''裏面S' 你試圖使用'真的做。 –