所以我很失落,因为我错过了一个星期并且正在追赶,但是我要写一个awk程序来分辨两个日期之间的差异.
我或多或少已经完成了它,但是如果用户在进行数据验证时输入01/01/YYYY则不喜欢它.我将3个字段从arg中拉出来,然后将它们传递给函数进行验证.
在我的验证中,给我带来麻烦的部分是:
if ( day > Days[month] ){
invalid stuff here
}
Run Code Online (Sandbox Code Playgroud)
其中Days[]是一个数组,其中[1] = 31,[2] = 28(如果是跳跃则为29)等.
它命中了,因为没有定义Days [01].我可以通过将[01]定义为与[1]相同来解决它,但我更喜欢更优雅的东西.
如何在awk程序中删除变量月份的前导零?我发现的所有内容都是在shell脚本中使用并调用awk,但这对我没有帮助.
谢谢您的帮助!
你需要这个,假设你的变量被调用month:
gsub ("^0*", "", month);
Run Code Online (Sandbox Code Playgroud)
它^是起始锚点,0*表示零个或多个0字符.因此,这有效地删除0了变量开头的所有字符.
举例来说(在将日期拆分之前,也显示了对中间数字进行处理的方法,请参阅第二个gsub):
pax> echo '1/1/2013
03/12/2014
02/02/1965' | awk '{gsub ("^0*", "", $0); gsub ("/0*", "/", $0); print}'
1/1/2013
3/12/2014
2/2/1965
Run Code Online (Sandbox Code Playgroud)