Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/gawk -f
- # NOTE: string 1st char at pos. 1.
- # Functions.
- function process_rec4(rec4, tbl_filter){
- srch_fltr = substr(rec4, 2, 11) # PoD.
- if (srch_fltr in tbl_filter)
- {
- rec4_orig = tbl_filter[srch_fltr]
- if ( (substr(rec4_orig, 591, 10) != substr(rec4, 591, 10)) || (substr(rec4_orig, 752, 2) != substr(rec4, 752, 2)) )
- {
- print rec4_orig >> FILE_OT
- print rec4 >> FILE_OT
- line_cnt_ot += 2
- }
- }
- else
- {
- print "*** ERROR: PoD = " srch_fltr " not in original file!" >> JOB_OUT
- exit 99
- }
- }
- # Before first line.
- BEGIN {
- print "" >> JOB_OUT
- print "GAwk Started" >> JOB_OUT
- # Constants.
- NUM_RECS_INVC = 4
- # Variables Init.
- line_crnt = ""
- load_fltr = ""
- srch_fltr = ""
- #
- line_cnt_in = 0
- line_cnt_ot = 0
- line_cnt_fltr = 0
- #
- modulo = 69
- #
- rec1 = ""
- rec2 = ""
- rec3 = ""
- rec4 = ""
- rec4_orig = ""
- }
- # 1st File (filter).
- # Load filter to table.
- FNR==NR {
- line_cnt_fltr += 1
- line_crnt = $0
- modulo = line_cnt_fltr % NUM_RECS_INVC
- switch (modulo){
- case 0:
- rec4 = line_crnt
- load_fltr = substr(rec4, 2, 11) # PoD.
- tbl_filter[load_fltr] = rec4
- break
- case 1:
- rec1 = line_crnt
- break
- case 2:
- rec2 = line_crnt
- break
- case 3:
- rec3 = line_crnt
- break
- default:
- print "line_cnt_in % NUM_RECS_INVC = " (line_cnt_in % NUM_RECS_INVC) >> JOB_OUT
- exit
- break
- }
- next
- }
- # For each line of input.
- {
- line_cnt_in += 1
- line_crnt = $0
- modulo = line_cnt_in % NUM_RECS_INVC
- switch (modulo){
- case 0:
- rec4 = line_crnt
- process_rec4(rec4, tbl_filter)
- break
- case 1:
- rec1 = line_crnt
- break
- case 2:
- rec2 = line_crnt
- break
- case 3:
- rec3 = line_crnt
- break
- default:
- print "line_cnt_in % NUM_RECS_INVC = " (line_cnt_in % NUM_RECS_INVC) >> JOB_OUT
- exit
- break
- }
- }
- # After last line.
- END {
- print "" >> JOB_OUT
- print "Read : line_cnt_fltr = @" line_cnt_fltr "@" >> JOB_OUT
- print "Read : line_cnt_in = @" line_cnt_in "@" >> JOB_OUT
- print "Writ : line_cnt_ot = @" line_cnt_ot "@" >> JOB_OUT
- print "" >> JOB_OUT
- print "GAwk Ended" >> JOB_OUT
- }
Add Comment
Please, Sign In to add comment