Compare file1 header count with file2 line count


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Compare file1 header count with file2 line count
# 1  
Old 02-26-2014
Compare file1 header count with file2 line count

What I'm trying to accomplish. I receive a Header and Detail file for daily processing. The detail file comes first which holds data, the header is a receipt of the detail file and has the detail files record count. Before processing the detail file I would like to put a wrapper around another script that does a validation check to make sure the wc -l for the detail is the same as the count in the header.

Questions: Is the exising code the best approach? If they match I need to continue on and execute another script.

File1(Header File) Content:
FTB2013-10-10FTB_TRIG_DET_FILE_FPRS201310101239.TXT 000000004

File 2 (Detail File): wc -l should equal 4 in this case.

Code:
HDR_count=$(cat /apps/fmp/ftp/Incoming/FPRS/DC/FTB_TRIG_HDR* | awk '{print $2}'  | sed 's/^0*//' )
DET_count=$(wc -l /apps/fmp/ftp/Incoming/FPRS/DC/FTB_TRIG_DET* )
if [ ${HDR_count} -ne ${DET_count} ]
then
    echo
        echo "HDR count[ ${HDR_count} ] net equal to DET count [ ${DET_count} ]"
        exit 3
fi

---------- Post updated at 12:39 PM ---------- Previous update was at 08:50 AM ----------

Hello All,

If other examples of this are already documented please let me know and I will take a look. Thanks again.
# 2  
Old 02-26-2014
Quote:
Originally Posted by pone2332
What I'm trying to accomplish. I receive a Header and Detail file for daily processing. The detail file comes first which holds data, the header is a receipt of the detail file and has the detail files record count. Before processing the detail file I would like to put a wrapper around another script that does a validation check to make sure the wc -l for the detail is the same as the count in the header.

Questions: Is the exising code the best approach? If they match I need to continue on and execute another script.

File1(Header File) Content:
FTB2013-10-10FTB_TRIG_DET_FILE_FPRS201310101239.TXT 000000004

File 2 (Detail File): wc -l should equal 4 in this case.

Code:
HDR_count=$(cat /apps/fmp/ftp/Incoming/FPRS/DC/FTB_TRIG_HDR* | awk '{print $2}'  | sed 's/^0*//' )
DET_count=$(wc -l /apps/fmp/ftp/Incoming/FPRS/DC/FTB_TRIG_DET* )
if [ ${HDR_count} -ne ${DET_count} ]
then
    echo
        echo "HDR count[ ${HDR_count} ] net equal to DET count [ ${DET_count} ]"
        exit 3
fi

---------- Post updated at 12:39 PM ---------- Previous update was at 08:50 AM ----------

Hello All,

If other examples of this are already documented please let me know and I will take a look. Thanks again.
From your script what I could see is you always receive exit code 3, provide sample input and expected output with clear description about the task.
# 3  
Old 02-26-2014
Expectation:

Note: I took the exiting logic from other scripts so want to see what other options I have and if this is a clean approach.

First- I would like to parse the HDR file an grab the count of '78'.
Second- I would like to count the records/lines of the DET file.
Third- If the counts match then echo counts from both files and move on to execute script ABC.ksh.
Fourth- If the counts don't match exit with failure code 3.
Code:
$ cat TEST.QDIA_TRIG_HDR_FILE201402250347.txt
PPADC2014-02-25PPADC_TRIG_DET_FILE201402250345.txt  000000078

Code:
$ wc -l TEST.QDIA_TRIG_DET_FILE201402250347.txt
78 TEST.QDIA_TRIG_DET_FILE201402250347.txt


Last edited by Franklin52; 02-27-2014 at 03:17 AM.. Reason: Please use code tags
# 4  
Old 02-26-2014
I think you did not notice what I highlighted with red color, variable you defined using wc -l and cat doesn't return just an integer, it returns filename as well, in case of cat you will not get line count instead variable contains content of file you inputed . Please do check.

---------- Post updated at 12:54 AM ---------- Previous update was at 12:44 AM ----------

Quote:
Originally Posted by pone2332
Expectation:

Note: I took the exiting logic from other scripts so want to see what other options I have and if this is a clean approach.

First- I would like to parse the HDR file an grab the count of '78'.
Second- I would like to count the records/lines of the DET file.
Third- If the counts match then echo counts from both files and move on to execute script ABC.ksh.
Fourth- If the counts don't match exit with failure code 3.

$ cat TEST.QDIA_TRIG_HDR_FILE201402250347.txt
PPADC2014-02-25PPADC_TRIG_DET_FILE201402250345.txt 000000078

$ wc -l TEST.QDIA_TRIG_DET_FILE201402250347.txt
78 TEST.QDIA_TRIG_DET_FILE201402250347.txt
# 5  
Old 02-26-2014
Updated code: Let me know if that is better or if I'm getting closer.

HDR File:
A: Cat /apps/fmp/ftp/Incoming/FPRS/FPRS/TEST.QDIA_TRIG_HDR* <pipe> to
B: awk '{print $2}' <pipe> integer to
C: sed 's/^0*//' which remove leading 0's.

DET File: Where I made an update.
A: cat /apps/fmp/ftp/Incoming/FPRS/FPRS/TEST.QDIA_TRIG_DET* <pipe> to
B: wc -l

Code:
HDR_count=$(cat /apps/fmp/ftp/Incoming/FPRS/FPRS/TEST.QDIA_TRIG_HDR* | awk '{print $2}'  | sed 's/^0*//' )
DET_count=$(cat /apps/fmp/ftp/Incoming/FPRS/FPRS/TEST.QDIA_TRIG_DET* | wc -l )
if [ ${HDR_count} -ne ${DET_count} ]
then
    echo
        echo "HDR count[ ${HDR_count} ] net equal to DET count [ ${DET_count} ]"
        exit 3
fi

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Compare file1 and file2, print matching lines in same order as file1

I want to print only the lines in file2 that match file1, in the same order as they appear in file 1 file1 file2 desired output: I'm getting the lines to match awk 'FNR==NR {a++}; FNR!=NR && a' file1 file2 but they are in sorted order, which is not what I want: Can anyone... (4 Replies)
Discussion started by: pathunkathunk
4 Replies

2. Shell Programming and Scripting

Compare and find records of file1 not in file2

hi.. i am using solaris system and ksh and using nawk to get records of file1 not in file2(not line by line comparison). code i am using is nawk 'NR==FNR{a++} !a {print"line:" FNR"->" $0} ' file2 file1 same command with awk runs perfectly on darwin kernel(mac) but in solaris it does line by... (2 Replies)
Discussion started by: Abhiraj Singh
2 Replies

3. Shell Programming and Scripting

Compare file1 for matching line in file2 and print the difference in matching lines

Hello, I have two files file 1 and file 2 each having result of a query on certain database tables and need to compare for Col1 in file1 with Col3 in file2, compare Col2 with Col4 and output the value of Col1 from File1 which is a) not present in Col3 of File2 b) value of Col2 is different from... (2 Replies)
Discussion started by: RasB15
2 Replies

4. UNIX for Dummies Questions & Answers

File Row Line Count without Header Footer

Hi There! I am saving the file count of all files in a directory to an output file using: wc -l * > FileCount.txt I get: 114 G4SXORD 3 G4SXORH 0 G4SXORP 117 total But this count includes header and footer. I want to subtract 2 from the count and get ... (7 Replies)
Discussion started by: gagan8877
7 Replies

5. Shell Programming and Scripting

look for line from FILE1 at FILE2

Hi guys! I'm trying to write something to find each line of file1 into file2, if line is found return YES, if not found return NO. The result can be written to a new file. Can you please help me out? FILE1 INPUT: WATER CAR SNAKE (in reality this file has about 600 lines each with a... (2 Replies)
Discussion started by: demmel
2 Replies

6. UNIX for Dummies Questions & Answers

if matching strings in file1 and file2, add column from file1 to file2

I have very limited coding skills but I'm wondering if someone could help me with this. There are many threads about matching strings in two files, but I have no idea how to add a column from one file to another based on a matching string. I'm looking to match column1 in file1 to the number... (3 Replies)
Discussion started by: pathunkathunk
3 Replies

7. Shell Programming and Scripting

Shell script to count number of ~ from each line and compare with next line

Hi, I have created one shell script in which it will count number of "~" tilda charactors from each line of the file.But the problem is that i need to count each line count individually, that means. if line one contains 14 "~"s and line two contains 15 "~"s then it should give an error msg.each... (3 Replies)
Discussion started by: Ganesh Khandare
3 Replies

8. Shell Programming and Scripting

Compare multiple fields in file1 to file2 and print line and next line

Hello, I have two files that I need to compare and print out the line from file2 that has the first 6 fields matching the first 6 fields in file1. Complicating this are the following restrictions 1. file1 is only a few thousand lines at most and file2 is greater than 2 million 2. I need to... (7 Replies)
Discussion started by: gillesc_mac
7 Replies

9. Shell Programming and Scripting

Awk Compare File1 File2 on f2

I'm trying to compare two files using AWK, where if field2 of both files match, replace field1 of file1 with field1 of file2 and if there is no match just print the line of file1. file1.txt (has empty first field) :ABBATOM:B:H:1992 :ABBA TROJAN:B:H:1993 :ABBES FIRST HOPE:B:M:1997 :ABBEYS... (4 Replies)
Discussion started by: RacerX
4 Replies

10. Shell Programming and Scripting

Awk Compare f1,f2,f3 of File1 with f1 of File2

I have an Awk string-compare problem and have searched the internet and forums for a solution i could use but cannot find a solution i understand to make work with my particular problem: I need to compare (field1 field2 field3 of File1) against (field1 of File2) and if they match print out... (6 Replies)
Discussion started by: RacerX
6 Replies
Login or Register to Ask a Question