2

我有一个具有以下语法的输入文件:

"ID","Company Name","AccountManager","Product","Support Type","Country"

例子:

"1","Company one","Surname Name / Phone/ Cell Phone ","Product► (d2XXXXXX) ► Version","29.10.2012 ► Type of support","Russia"

"2","Company two","Surname Name / Phone/ Cell Phone ","Product► (d2XXXXXX) ► Version\nProduct► (d2XXXXXX) ► Version\nProduct► (d2XXXXXX) ► Version","31.10.2012 ► Type of support\n28.10.2012 ► Type of support\nn/a ► Type of support","Foreign"

"3","Company three","Surname Name / Phone/ Cell Phone ","Product► (d2XXXXXX) ► Version\nProduct► (d2XXXXXX) ► Version\nProduct► (d2XXXXXX) ► Version\nProduct► (d2XXXXXX) ► Version\nProduct► (d2XXXXXX) ► Version\nProduct► (d2XXXXXX) ► Version,"31.12.2012 ► Type of support\nType of support\nn\\a ► Type of support\n31.03.2013 ► Type of support\n25.10.2012 ► Type of support\nn\\a ► Type of support","Russia"

"4","Company fourth","Surname Name / Phone/ Cell Phone ","1) Product► (d2XXXXXX) ► Version\n2) Product► (d2XXXXXX) ► Version\n3) Product► (d2XXXXXX) ► Version\n4) Product► (d2XXXXXX) ► Version\n5) Product► (d2XXXXXX) ► Version\n6) Product► (d2XXXXXX) ► Version,"1) 31.12.2012 ► Type of support\n2) Type of support\n3) n\\a ► Type of support\n4) 31.03.2013 ► Type of support\n5) 25.10.2012 ► Type of support\n6) n\\a ► Type of support","Foreign"

"5","Company five","Surname Name / Phone/ Cell Phone ","Product► (d2XXXXXX) ► Version","33.10.2012 ► Type of support","Russia"

第一个公司只有一个产品,第二个公司有 3 个产品 - 它们用\n(Product and Support Type) 分隔,第三个公司有 6 个产品,第四个公司有 6 个产品,但不是标准字符串 (1), 2)等),第五家公司有1个产品,但日期(33)有错误。

在输出中,此字符串必须是单独的并重复列的值:

"ID","Company Name","AccountManager","Country",但"AccountManager"应该只有姓氏和姓名,并且支持类型列应该与今天的日期进行比较 - 如果支持类型中的日期与今天的日期在 27 到 32 天之间的值不同,则此列必须在输出文件中。如果我们获得n/a了支持类型,则应该错过它。

输出应如下所示: 在文件 Russia.csv 中:

"1","Company one","Surname Name","Product► (d2XXXXXX) ► Version","29.10.2012","Russia"
"3","Company three","Surname Name","Product► (d2XXXXXX) ► Version","25.10.2012","Russia"

在文件 Foreign.csv 中:

"2","Company two","Surname Name","Product► (d2XXXXXX) ► Version","28.10.2012","Foreign"
"2","Company two","Surname Name","Product► (d2XXXXXX) ► Version","31.10.2012","Foreign"
"4","Company fourth","Surname Name","Product► (d2XXXXXX) ► Version","25.10.2012","Foreign"

在 Error.csv 中:

 Error in date! "5","Company five","Surname Name / Phone/ Cell Phone ","Product► (d2XXXXXX) ► Version","33.10.2012 ► Type of support","Russia"

我有一个脚本可以与日期(27 到 32)进行比较,但不能检查正确的日期、使用计数拆分字符串和单独的文件输出:

#/usr/bin/awk -f

BEGIN {
    FS=",";
    "date +\"%s\"" | getline curr_timestamp;
}

{
    split($3, account, "/");
    gsub(/ $/, "", account[1]);
    split($4, products, "\\\\n");
    split($5, supports, "\\\\n");
    for (i in products) {
        gsub("\"", "", products[i]);
        gsub("\"", "", supports[i]);
        split(supports[i], timesupport, " ");
        # ignore not available and support without date
        if (supports[i] !~ /n\\\\a*/ && supports[i] !~ /n\/a*/ && $2 !~ /\NULL/ && timesupport[1] ~ /[0-9][0-9].[0-9][0-9].[0-9][0-9][0-9][0-9]/) {
            # formatting date
            split(timesupport[1], date, "\.");
            mydate = "date -d \""date[3]"/"date[2]"/"date[1]"\" \"+%s\"";
            # date to timestamp (using bash)
            mydate | getline timestamp;
            # timestamp is >= 27 days and <= 32 days
            if ((timestamp-curr_timestamp) >= 2332800 && (timestamp-curr_timestamp) <= 2764800)
                print $1","$2","account[1]"\",\""products[i]"\",\""supports[i]"\","$6;
        }
    }
}
4

0 回答 0