-1

ファイル 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 

これには誰か助けが必要です

4

3 に答える 3

0

この別の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
于 2013-07-17T07:10:47.957 に答える
0

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
于 2013-07-17T11:53:52.663 に答える