My file has multiple headers and multiple record types (eg. 0001, 0002, 0003, 0004). Count is given for each record type in the trailer row along with overall detail record count.
Sample File:
XYZH001
YZXH002
0001Rec1
0001Rec2
YZXH002
0002Rec1
0002Rec2
YZXH002
0003Rec1
0003Rec2
0003Rec3
YZXH002
0004Rec1
T999008002002004001
File details:
Detail records are where 1 to 4 position data in (0001, 0002, 0003, 0004)
Trailer:
Trailer identifier(position 1 to 4) = T999
total data count (position 5 to 7) = 008
count of record type 0001 (position 8 to 10) = 002
count of record type 0002 (position 11 to 13) = 002
count of record type 0003 (position 14 to 16) = 004
count of record type 0004 (position 17 to 19) = 001
Requirement:
-- Compare overall detail row count where 1 to 4 position data in (0001, 0002, 0003, 0004) with trailer record count (position 5 to 7)
-- Compare each Record type row count with trailer record count
eg. Compare row count where 1 to 4 position data = 0001 with trailer record count for 0001 (position 5 to 7)
.....
-- Stop execution in case of detail record row count and trailer count mismatch
Expected output :
Overall detail row count 8 matches with trailer record count 8.
Row count for 0001 record type 2 matches with trailer record count 2.
Row count for 0002 record type 2 matches with trailer record count 2.
Row count for 0003 record type 3 does not match with trailer record count 4.
Stopping execution.
sed. What you're trying to do can (and should) be done in a single pass through the file, not multiple passes. Hint: perl has awk and sed like syntax built-in. and awk hassub()andgsub()functions which can do sed-like search & replace.