function array_length(a, s,e) { for (e in a) s += 1 return s } function join(array, sep, limit, s,i) { if (limit == 0) limit = array_length(array) s = array[1] for (i=2; i<=limit; i++) s = s sep array[i] return s } BEGIN { FS="|"; split("", paths) # create empty array "paths" split("", paths_sizes) # create empty array "paths_sizes" nb_paths = 0 nb_key_fields = split(key, key_fields, "/") } { if (index($1, key) == 1) { nb = split($1, path_fields, "/") p = join(path_fields, "/", nb_key_fields+1) flag = nb > nb_key_fields + 1 ? "+" : " " p = flag p if (!(p in paths_sizes)) { paths[nb_paths] = p nb_paths += 1 } paths_sizes[p] += $2 } } END { for (p=0; p