-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfields-merge.sh
More file actions
executable file
·89 lines (85 loc) · 2 KB
/
fields-merge.sh
File metadata and controls
executable file
·89 lines (85 loc) · 2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#!/bin/bash
BIN="$(cd "$(dirname "$0")" || exit ; pwd)"
source "${BIN}/lib-verbose.sh"
function awk_script() {
cat <<'EOT'
function timestamp_to_iso(timestamp, year, month_name, month, day, time) {
year = timestamp;
gsub(/^[^,]*, [0-9][0-9]* *[A-Z][a-z][a-z] */, "", year);
gsub(/ .*$/, "", year);
month_name = timestamp;
gsub(/^[^,]*, [0-9][0-9]* */, "", month_name);
gsub(/ .*$/, "", month_name);
for (month = 1; month <= 12; month++) {
if (month_array[month] == month_name) {
break;
}
}
if (month < 10) {
month = "0" month;
} else {
month = "" month;
}
day = timestamp;
gsub(/^[^,]*, /, "", day);
gsub(/ .*$/, "", day);
if ((day + 0) < 10) {
day = "0" day;
}
time = timestamp;
gsub(/^[^,]*, [0-9][0-9]* *[A-Z][a-z][a-z] *[0-9][0-9]* */, "", time);
gsub(/[-+ ].*$/, "", time);
return "" year "-" month "-" day "T" time;
}
BEGIN {
month_array[1] = "Jan";
month_array[2] = "Feb";
month_array[3] = "Mar";
month_array[4] = "Apr";
month_array[5] = "May";
month_array[6] = "Jun";
month_array[7] = "Jul";
month_array[8] = "Aug";
month_array[9] = "Sep";
month_array[10] = "Oct";
month_array[11] = "Nov";
month_array[12] = "Dec";
previous_file_name = "";
fields = "";
}
$1 != previous_file_name {
if (previous_file_name != "") {
gsub(/^[.][\/]/, "", previous_file_name);
gsub(/\/[^\/]*\/[^\/]*$/, "|File: &", previous_file_name);
print "Folder: " previous_file_name "|" fields;
}
previous_file_name = $1;
fields = "";
}
{
file_name = $1;
value = $0;
sub(/^[^:]*:/, "", value);
sub(/^[^:]*:/, "", value);
}
$2 == "Date" {
value = timestamp_to_iso(value);
}
{
field = $2 ": " value;
if (fields == "") {
fields = field;
} else {
fields = fields "|" field;
}
}
END {
if (previous_file_name != "") {
gsub(/^[.][\/]/, "", previous_file_name);
gsub(/\/[^\/]*\/[^\/]*$/, "|File: &", previous_file_name);
print "Folder: " previous_file_name "|" fields;
}
}
EOT
}
awk -F ':' "$(awk_script)" "$@"