我必须把一个月的1到9天改为01到09天。我是根据下面的代码做的

echo "1"|awk '{gsub('1',"01")}1'
echo "2"|awk '{gsub('2',"02")}1'

但是现在所有其他的日子,比如10,11,都被替换成了10111
请指导我如何编写它,以便只有个位数的天数以0为前缀。谢谢

最佳答案

你能用gawk吗?

echo "1 2 11 21" | gawk '{gsub(/\y[0-9]\y/,"0&")}1'
01 02 11 21

使用了gawk中的单词boundary正则表达式。更多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

关于linux - AWK-无法替代值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46055461/

10-11 16:41