ファイル 1
P1,06/Jul/2013,09/Jul/2013
P2,06/Jul/2013,10/Jul/2013
P3,06/Jul/2013,15/Jul/2013
私が欲しい出力:
P1,06/07/2013,09/07/2013,3days
P2,06/07/2013,10/07/2013,4days
P3,06/07/2013,15/07/2013,9days
これには誰か助けが必要です
この別のawk
解決策を試してください。
#!/usr/bin/awk
BEGIN {
FS=",";
}
{
epoch_date_format($2)|getline d1
epoch_date_format($3)|getline d2
days=(d2-d1)/3600/24;
month_format(d1)|getline sd1
month_format(d2)|getline sd2
print $1","sd1","sd2","days"days"
}
function epoch_date_format( string ) {
split(string,array,"/");
return "date -d\""array[1]"-"array[2]"-"array[3]"\" +%s";
}
function month_format( epoch ) {
return "date -d@"epoch" +%d/%m/%Y"
}
出力:
P1,06/07/2013,09/07/2013,3days
P2,06/07/2013,10/07/2013,4days
P3,06/07/2013,15/07/2013,9days
GNU awk の場合:
awk -F'[,/]' -v OFS=',' '
function date2secs(fld) {
return mktime($(fld+1)" "(match("JanFebMarAprMayJunJulAugSepOctNovDec",$fld)+2)/3" "$(fld-1)" 0 0 0")
}
{
start= date2secs(3)
end = date2secs(6)
diff = int((end-start)/(60*60*24))
print $1,strftime("%d/%m/%Y",start),strftime("%d/%m/%Y",end),diff"days"
}
' file
P1,06/07/2013,09/07/2013,3days
P2,06/07/2013,10/07/2013,4days
P3,06/07/2013,15/07/2013,9days