Reputation: 958
In the dataset I am processing, the 5th ($5
) column of each line contains a date in '%d/%m/%y'
format. I want to compare this with a user provided one.
I know that in order to easily compare dates with relational binary operators they need to be in %y-%m-%d
so I need to inline-convert the 5th columns value to that in order for the expression to evaluate to true:
Here's what I've come up with till now:
awk -F "$columnsep" -v dateA="$bornsince" '{if (FNR>1 && dateA<= system("bash echo "$5"| awk -F '/' '{print $3"-"$2"-"$1}'") ) {print}}' $file
As you can see, the '{if (FNR>1 && dateA<= system("bash echo "$5"| awk -F '/' '{print $3"-"$2"-"$1}'") ) {print}}'
is the expression I am trying to evaluate but I have trouble getting the system call to parse. I really just want to call awk -F '/' '{print $3"-"$2"-"$1}'"
, piping $5
into it in order to convert the date properly.
Minimal example dataset:
1099511629352 Nunez Jorge female 17/11/1986
Upvotes: 1
Views: 319
Reputation: 50795
Here is a gawk solution
awk -F "$columnsep" -v dateA="$bornsince" '
(FNR > 1 && dateA <= cnv_date($5))
function cnv_date(date, a) {
split(date, a, "/")
return a[3] "-" a[2] "-" a[1]
}' $file
Upvotes: 1