Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/awk
- # awk -f ./order-data.awk ./input-data.csv
- # B le moment (hh:mm:ss) d'apparition et T le type ("State start","State stop" ou "Point").
- # la table que j'essaie de faire actuellement devrait contenir des couples d'évènements X, Y (ou leur identifiant). le critère d'appartenance à cette table est le suivant :
- # si ((B de X - B de Y)<2secondes et > 0) et X différent de Y et T de X appartient à {"State start","Point"}
- # alors on crée l'élément dans la table qui contient l'identifiant de X puis l'identifiant de Y.
- # on ne doit pas passer à la row start time suivante tant que l'on est pas tombé sur une row suivantes qui a lieu + de 2sec après
- # il faut stocker TOUS les couples de row qui sont séparées par moins de 2sec
- # data structure:
- # $1 = "Date_dmy" = B
- # $2 = "Time_Absolute_hms"
- # $3 = "Time_Absolute_ms"
- # $4 = "Time_Relative_hms"
- # $5 = "Time_Relative_ms"
- # $6 = "Time_Relative_s"
- # $7 = "Duration_s"
- # $8 = "Observation"
- # $9 = "Event_Log"
- # $10 = "Behavior"
- # $11 = "Modifier_1"
- # $12 = "Modifier_2"
- # $13 = "Modifier_3"
- # $14 = "Event_Type" = ("State start","State stop" ou "Point").
- # $15 = "Comment"
- # $16 = "IV_Age"
- # $17 = "IV_Lecture"
- # $18 = "IV_Prénom"
- #
- BEGIN{
- ROWS_TO_SKIP = 1; # how many row to skip (if there is header)
- TIME_THRESHOLD = 2000; # 2 seconds
- # inputData = "données-vrac.csv";
- inputData = "./input-data.csv";
- outputFile = "output-data.csv"
- FS=";"
- previousRowID = 1; # row position
- # previousRow = ''; # store current row for comparison
- previousRowTimeStamp = 0;
- }
- {
- rowTimeStamp[NR] = timeToMillisecond($4, $5);
- # start();
- }
- function timeToSecond(hhmmss)
- {# convert time to second
- split(hhmmss, t, /:0*/)
- return (t[1]*3600) + (t[2]*60) + t[3]
- }
- function timeToMillisecond(hhmmss, ms)
- {# convert time to second
- milli = 1000;
- split(hhmmss, t, /:0*/);
- return (t[1]*3600*milli) + (t[2]*60*milli) + t[3]*milli +ms;
- }
- function secondToTime(sec, h, m, s)
- {# convert second to time
- s = sec % 60;
- sec = int(sec/60);
- m = sec % 60;
- sec = int(sec/60);
- h = sec;
- return sprintf("%02d:%02d:%02d", h, m, s);
- }
- # function millisecondToTime(millisec)
- # {# convert second to time
- # s = millisec % 60;
- # s = millisec % 60;
- # sec = int(sec/60);
- # m = sec % 60;
- # sec = int(sec/60);
- # h = sec;
- #
- # return sprintf("%02d:%02d:%02d:%03d", h, m, s, ms);
- # }
- END {
- for (anchor=1; anchor<=NR; anchor++)
- {
- cur = rowTimeStamp[anchor];
- for (forward=anchor+1; forward<=NR; forward++)
- {
- if (rowTimeStamp[forward] <= (cur+TIME_THRESHOLD))
- {
- printf("%d,%d [%d -> %d]\n", anchor, forward, rowTimeStamp[anchor], rowTimeStamp[forward], rowTimeStamp[forward]-rowTimeStamp[anchor]);
- } else
- {
- break;
- }
- }
- }
- printf("\n");
- }
Advertisement
Add Comment
Please, Sign In to add comment