次の構文の入力ファイルがあります。
"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"
最初の会社には 1 つの製品のみがあり、2 番目の会社には 3 つの製品があります - それらは\n
(製品とサポートの種類) で分けられ、3 番目の会社には 6 つの製品があり、4 番目の会社には 6 つの製品がありますが、標準的な文字列 (1) ではありません2)等)、5社目は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;
}
}
}