strip leading zeros in awk program

awk

Solution

You need this, assuming your variable is called `month`:

gsub ("^0*", "", month);

The `^` is the start anchor and `0*` means zero or more `0` characters. So this effectively removes all `0` characters at the start of the variable.

By way of example (which also shows a way to do it to the middle number as well, before splitting the date apart, see the second `gsub` for that):

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

Problem

So I'm pretty lost as I missed a week and am playing catch up, but I'm to write an awk program to tell the difference, in days, between two dates. I'm more or less done with it, however it doesn't like it if the user inputs 01/01/YYYY when doing my data validation. I pull the 3 fields out of the arg then pass them to a function to validate. the part that's giving me trouble is, in my validation: ``` if ( day > Days[month] ){ invalid stuff here } ``` where `Days[]` is an array holding [1]=31, [2]=28 (or 29 if leap) etc. It hits true because Days[01] is not defined. I could go around it by defining a [01] as the same as [1] I suppose but I'd rather something more elegant. How can I strip the leading zeros, within the awk program, of the variable month? Everything I've found is for use in a shell script and invokes awk, but that doesn't really help me. Thanks for the help!

Original source