This answer is heavily dependent on BSD date formatting available on a mac
#!/usr/bin/awk -f
BEGIN { FS=" " }
{
split( $0, arr, "," )
ts1 = date2ts( arr[ 2 ] )
ts2 = date2ts( arr[ 3 ] )
days = (ts2-ts1)/86400
date1 = ts2date( ts1 )
date2 = ts2date( ts2 )
printf( "%s,%s,%s,%d days\n", arr[ 1 ], date1, date2, days )
}
function runCmd( cmd ) {
cmd | getline output
close( cmd )
gsub( "\"", "", output )
return output
}
function date2ts( date ) {
return runCmd( sprintf( \
"date -j -f\\\"%%d/%%b/%%Y\\\" \\\"%s\\\" +\\\"%%s\\\"", date ) )
}
function ts2date( ts ) {
return runCmd( sprintf( \
"date -j -f\\\"%%s\\\" \\\"%s\\\" +\\\"%%d/%%m/%%Y\\\"", ts ) )
}
I get the following output:
P1,06/07/2013,09/07/2013,3days
P2,06/07/2013,10/07/2013,4days
P3,06/07/2013,15/07/2013,9days