BEGIN { number_of_lines = 0; number_of_header = 0; T_number_of_lines = 0; T_number_of_header = 0; input_file = in_file; output_file = out_file; # # get the first line, if any. getline aaa 0) { # don't take care } else { where_2 = index(part_1, "#####"); if (where_2 > 0) { # don't take care } else { d_part_1 = part_1 + 0; # look at T_source_part1[part_2] where_3 = index(T_source_part1[part_2], "#####"); if (where_3 > 0) { sum = d_part_1; # write the sum to T_source_part1 T_source_part1[part_2] = d_part_1; } else { d_T = T_source_part1[part_2] + 0; sum = d_part_1 + d_T; # write the sum back to T_source_part1 T_source_part1[part_2] = sum; } } } } } END { if (first_run == "yes") { # copy to T_ T_number_of_header = number_of_header; T_number_of_lines = number_of_lines; for(i = 1; i <= T_number_of_header; i++) { T_header_part1[i] = header_part1[i]; T_header_part2[i] = header_part2[i]; T_header_part3[i] = header_part3[i]; } for (i = 1; i <= T_number_of_lines; i++) { T_source_part1[i] = source_part1[i]; T_source_part2[i] = source_part2[i]; T_source_part3[i] = source_part3[i]; } } #printf("T_number_of_header is %d\n", T_number_of_header); #printf("T_number_of_lines is %d\n", T_number_of_lines); # delete the previous version printf("") > output_file; for(i = 1; i <= T_number_of_header; i++) { printf("%9s:%5d:%s\n", T_header_part1[i], T_header_part2[i], T_header_part3[i]) >> output_file; } for (i = 1; i <= T_number_of_lines; i++) { printf("%9s:%5d:%s\n", T_source_part1[i], T_source_part2[i], T_source_part3[i]) >> output_file; } close(output_file); }