I want to find the difference between two files, only for the header (column names)


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting I want to find the difference between two files, only for the header (column names)
# 22  
Old 09-11-2014
You must be kidding! Where in your feed.txt file are the header columns updated_at and created_at? And, you specified one column to find only! What a waste of time!

---------- Post updated at 10:44 ---------- Previous update was at 10:32 ----------

Although seriously annoyed, here's a proposal that works for the repeatedly modified specs and the corrected samples:
Code:
awk -F\; 'NR==FNR               {n=split ($0, HD)
                                 DEC=$0
                                 next  
                                }
          FNR==1 && $0==DEC     {exit}
          FNR==1                {for (i=1; i<=NF; i++) 
                                   if ($i != HD[i-j]) {DEL[++j]=i; print "Column " i ": " $i " > mismatch.txt"}
                                }
                                {for (i=1; i<=j; i++) $(DEL[i])=""
                                 sub (/;;/,";"); sub (/^;|;$/, "")
                                }                       
          1
        ' OFS=";" dec.txt feed.txt

This User Gave Thanks to RudiC For This Post:
# 23  
Old 09-11-2014
Hi,

Must admit, when I saw the initial sample data I thought OK - was a bit shocked to see the actual data sample - no resemblence at all to the original request.

Dave
# 24  
Old 09-11-2014
Shouldn't:
Code:
                                   if ($i != HD[i-j]) {DEL[++j]=i; print "Column " i ": " $i " > mismatch.txt"}

be:
Code:
                                   if ($i != HD[i-j]) {DEL[++j]=i; print "Column " i ": " $i > "mismatch.txt"}

This User Gave Thanks to Don Cragun For This Post:
# 25  
Old 09-11-2014
Hi Rudic,

Thanks for your reply. I never had any intention to create confusion. I thought I should keep the sample file simple and explain my requirement so that I can later modify the code for a file with more columns.

I really apologize for failing to explain in a clear way.

Regards
Praveen
# 26  
Old 09-11-2014
@Don Cragun: Yes - 'twas my testing script, and I slightly lost my sang froid...
# 27  
Old 09-14-2014
@MadeInGermany

Hi,

I too have a similar requirement. I was reffering to your code

Code:
awk '
BEGIN { FS=OFS=";" }
NR==FNR {
# 1st file: build hd[]
for (i=1; i<=NF; i++) { hd[$i] }
next
}
FNR==1 {
# header of 2nd file: if in hd[] note that column in col[]
for (i=1; i<=NF; i++) {
if ($i in hd) { col[i] } else { print "Column " i ": " $i > "mismatch.txt" }
}
} { # print the columns that are in col[] sep="" for (i=1; i<=NF; i++) { if (i in col) { printf "%s%s", sep, $i; sep=OFS }
}
print "" } ' declare.txt feed.txt

Where in I need to remove the new columns from a daily input data file if the same is not added in the database and report the new columns to the user.

I tried the above code to generate an output file (by using the similar sample files created by me). by slightly modifying the last line of the above code to generate the output file like

' declare.txt feed.txt > feed2.txt

Every thing works fine, it is creating a new file. If the columns are added, it is creating a "Mismatch.txt" file and if no new columns are added then it is skipping the creation of "Mismatch.txt". And in both the scenarios it is creating feed2.txt.

The code is even removing the new columns along with it's values.

But what I noticed is file size of feed2.txt is getting changed even when there is no new column added in the feed.txt file (sample file).

I have European characters like Á, Ä, Ç, Ë, Ê, É, ß, Ô, Ü in my input file "feed.txt". And I think those characters are getting messed up with some junk values when I run the script. They are not proplery shown when I open the input file in VI editor.

My question is, in the database we have the settings to be changed like charset and collatiion for recogninsing the international characters.

Is there such thing on Linux or UNIX for identifying and displaying the international characters?

I am to happy find a similar requirement with a solution which matches with my requirement. But I am stuck because of the filesize difference.

Please help me.

Merlin Joseph

Last edited by Franklin52; 09-14-2014 at 12:09 PM.. Reason: Please use regular code tags instead of inline code tags for multiple lines
# 28  
Old 09-14-2014
There are different "locale"s, that can have different character sets.
Print the current locale:
Code:
locale

List the installed locales:
Code:
locale -a

Set a UTF (multibyte) locale, for example:
Code:
export LC_ALL; LC_ALL=en_US.ISO8859-1

These 2 Users Gave Thanks to MadeInGermany For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Prefix a variable in the first column of all the records of the files with and without header

In a bash shell, I have to prefix a variable to two .CSV files File1.CSV and File2.CSV. One of the files has a header and the other one is with no header in the below format: "value11","value12","value13","value14","value15","value16" "value21","value22","value23","value24","value25","value26"... (7 Replies)
Discussion started by: dhruuv369
7 Replies

2. Shell Programming and Scripting

How to get difference of the same column between two files when other column matches?

File 1: 20130416,235800,10.78.25.104,BR2-loc,60.0,1624,50.0,0,50.0,0 20130416,235800,10.78.25.104,BR1-LOC,70.0,10,50.0,0,70.0,0 20130416,235800,10.78.25.104,Hub_None,60.0,15,60.0,0,50.0,0 File 2: 20130417,000200,10.78.25.104,BR2-loc,60.0,1626,50.0,0,50.0,0... (3 Replies)
Discussion started by: Lakshmikumari
3 Replies

3. Homework & Coursework Questions

Script to find difference between 2 files by column

Hi , i am newbie to shell scripting and am trying to do the below job, A shell script to be run with a command like sh Compare.ksh file1.txt file2.txt 1 2 > file3.txt 1 2-are the key columns Consider the delimiter would be Tab or comma File 1: SK TEST NAME MATHS PHYSICS 21 1 AAA... (1 Reply)
Discussion started by: shakthi666
1 Replies

4. Shell Programming and Scripting

Script to find difference between 2 files by column

Hi , i am newbie to shell scripting and am trying to do the below job, A shell script to be run with a command like sh Compare.ksh file1.txt file2.txt 1 2 > file3.txt 1 2-are the key columns Consider the delimiter would be Tab or comma File 1: SK TEST NAME MATHS PHYSICS 21 1... (1 Reply)
Discussion started by: shakthi666
1 Replies

5. UNIX for Dummies Questions & Answers

Find the average based on similar names in the first column

I have a table, say this: name1 num1 num2 num3 num4 name2 num5 num6 num7 num8 name3 num1 num3 num4 num9 name2 num8 num9 num1 num2 name2 num4 num5 num6 num4 name4 num4 num5 num7 num8 name5 num1 num3 num9 num7 name5 num6 num8 num3 num4 I want a code that will sort my data according... (4 Replies)
Discussion started by: FelipeAd
4 Replies

6. UNIX for Dummies Questions & Answers

Rename a header column by adding another column entry to the header column name

Hi All, I have a file example.csv which looks like this GrpID,TargetID,Signal,Avg_Num CSCH74_1_1,2007,61,256 CSCH74_1_1,212007,647,679 CSCH74_1_1,12007,3,32 CSCH74_1_1,207,299,777 I want the output as GrpID,TragetID,Signal-CSCH74_1_1,Avg_Num CSCH74_1_1,2007,61,256... (1 Reply)
Discussion started by: Vavad
1 Replies

7. Shell Programming and Scripting

Rename a header column by adding another column entry to the header column name URGENT!!

Hi All, I have a file example.csv which looks like this GrpID,TargetID,Signal,Avg_Num CSCH74_1_1,2007,61,256 CSCH74_1_1,212007,647,679 CSCH74_1_1,12007,3,32 CSCH74_1_1,207,299,777 I want the output as GrpID,TragetID,Signal-CSCH74_1_1,Avg_Num CSCH74_1_1,2007,61,256... (4 Replies)
Discussion started by: Vavad
4 Replies

8. Shell Programming and Scripting

find difference in file column...

Hi All, i have a file that is tab delimited. i need help to find the rows which are having same price based on the site code but some times, there are difference so i need to find only the records which are different in all site code. Dept Sec Barcode 10001 10002 10003 10004... (1 Reply)
Discussion started by: malcomex999
1 Replies

9. Shell Programming and Scripting

script to compare first column of two files and find difference

Hi, I want to write a script which will compare the 1st column of both the files and will give the difference. e.g:- my 1st file contains: 89 /usr 52 /usr/local 36 /tmp 92 /opt 96 /home 27 /etc/opt/EMCom 1 ... (3 Replies)
Discussion started by: adityam
3 Replies

10. Shell Programming and Scripting

Column names in flat files

Hi all, I want to create column names in a flat file and then load the data through some other application. For example, I have a file with emp.txt and I need column names as eno,ename,sal in the first line. The delimiter here is comma and record delimiter is end of line or unix new line. Could... (1 Reply)
Discussion started by: srivsn
1 Replies
Login or Register to Ask a Question