Guest User

Untitled

a guest
Oct 19th, 2018
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.38 KB | None | 0 0
  1. #!/usr/bin/gawk -f
  2.  
  3. # NOTE: string 1st char at pos. 1.
  4.  
  5. # Functions.
  6. function process_rec4(rec4, tbl_filter){
  7. srch_fltr = substr(rec4, 2, 11) # PoD.
  8.  
  9. if (srch_fltr in tbl_filter)
  10. {
  11. rec4_orig = tbl_filter[srch_fltr]
  12.  
  13. if ( (substr(rec4_orig, 591, 10) != substr(rec4, 591, 10)) || (substr(rec4_orig, 752, 2) != substr(rec4, 752, 2)) )
  14. {
  15. print rec4_orig >> FILE_OT
  16. print rec4 >> FILE_OT
  17. line_cnt_ot += 2
  18. }
  19. }
  20. else
  21. {
  22. print "*** ERROR: PoD = " srch_fltr " not in original file!" >> JOB_OUT
  23. exit 99
  24. }
  25. }
  26.  
  27. # Before first line.
  28. BEGIN {
  29. print "" >> JOB_OUT
  30. print "GAwk Started" >> JOB_OUT
  31.  
  32. # Constants.
  33. NUM_RECS_INVC = 4
  34.  
  35. # Variables Init.
  36. line_crnt = ""
  37. load_fltr = ""
  38. srch_fltr = ""
  39. #
  40. line_cnt_in = 0
  41. line_cnt_ot = 0
  42. line_cnt_fltr = 0
  43. #
  44. modulo = 69
  45. #
  46. rec1 = ""
  47. rec2 = ""
  48. rec3 = ""
  49. rec4 = ""
  50. rec4_orig = ""
  51. }
  52.  
  53. # 1st File (filter).
  54. # Load filter to table.
  55. FNR==NR {
  56. line_cnt_fltr += 1
  57. line_crnt = $0
  58.  
  59. modulo = line_cnt_fltr % NUM_RECS_INVC
  60. switch (modulo){
  61. case 0:
  62. rec4 = line_crnt
  63. load_fltr = substr(rec4, 2, 11) # PoD.
  64. tbl_filter[load_fltr] = rec4
  65. break
  66. case 1:
  67. rec1 = line_crnt
  68. break
  69. case 2:
  70. rec2 = line_crnt
  71. break
  72. case 3:
  73. rec3 = line_crnt
  74. break
  75. default:
  76. print "line_cnt_in % NUM_RECS_INVC = " (line_cnt_in % NUM_RECS_INVC) >> JOB_OUT
  77. exit
  78. break
  79. }
  80.  
  81. next
  82. }
  83.  
  84. # For each line of input.
  85. {
  86. line_cnt_in += 1
  87. line_crnt = $0
  88.  
  89. modulo = line_cnt_in % NUM_RECS_INVC
  90. switch (modulo){
  91. case 0:
  92. rec4 = line_crnt
  93. process_rec4(rec4, tbl_filter)
  94. break
  95. case 1:
  96. rec1 = line_crnt
  97. break
  98. case 2:
  99. rec2 = line_crnt
  100. break
  101. case 3:
  102. rec3 = line_crnt
  103. break
  104. default:
  105. print "line_cnt_in % NUM_RECS_INVC = " (line_cnt_in % NUM_RECS_INVC) >> JOB_OUT
  106. exit
  107. break
  108. }
  109. }
  110.  
  111. # After last line.
  112. END {
  113. print "" >> JOB_OUT
  114. print "Read : line_cnt_fltr = @" line_cnt_fltr "@" >> JOB_OUT
  115. print "Read : line_cnt_in = @" line_cnt_in "@" >> JOB_OUT
  116. print "Writ : line_cnt_ot = @" line_cnt_ot "@" >> JOB_OUT
  117. print "" >> JOB_OUT
  118. print "GAwk Ended" >> JOB_OUT
  119. }
Add Comment
Please, Sign In to add comment