我不得不从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' 你试图使用'真的做。 –