Compare two flat files and update one based on the values in the other


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Compare two flat files and update one based on the values in the other
# 1  
Old 09-09-2011
Compare two flat files and update one based on the values in the other

Hi,
I'm a newbie to scripting and am trying to compare two files using awk.

The files are exactly the same dimensions. Where the first file has 0's I would like to create an updated version of the second file which has the corresponding elements set to zero also.

eg:
file1:
12345 1 2 0 0 2 2
12346 1 1 2 2 0 0
12347 0 0 0 0 1 2

file2:
12345 2 2 1 2 2 2
12346 1 2 2 2 2 2
12347 0 0 1 2 1 2

output required:
12345 2 2 0 0 2 2
12346 1 2 2 2 0 0
12347 0 0 0 0 1 2

Many thanks in advance!
# 2  
Old 09-09-2011
Code:
#!/usr/bin/ksh
sed 's/ / A /1' File1 > FileA.tmp
sed 's/ / B /1' File2 > FileB.tmp
sort FileA.tmp FileB.tmp | while read mA1 mA2 mA3 mA4 mA5 mA6 mA7 mA8; do
  read mB1 mB2 mB3 mB4 mB5 mB6 mB7 mB8
  if [[ "${mA3}" = "0" ]]; then
    mB3='0'
  fi
  if [[ "${mA4}" = "0" ]]; then
    mB4='0'
  fi
  if [[ "${mA5}" = "0" ]]; then
    mB5='0'
  fi
  if [[ "${mA6}" = "0" ]]; then
    mB6='0'
  fi
  if [[ "${mA7}" = "0" ]]; then
    mB7='0'
  fi
  if [[ "${mA8}" = "0" ]]; then
    mB8='0'
  fi
  echo ${mB1} ${mB3} ${mB4} ${mB5} ${mB6} ${mB7} ${mB8}
done

# 3  
Old 09-09-2011
Code:
paste file1 file2 | awk '{
  for (i=1; i<=NF/2; i++)
    printf ($i ? $(i+NF/2) : 0) " "
  print ""
}'


Last edited by yazu; 09-09-2011 at 01:42 PM..
# 4  
Old 09-11-2011
Bug

Many thanks for the responses.
I've implemented the paste/awk script which works well as my file is very wide. I also piped the results and applied sed 's/.$//' before writing it to output. This was to remove the extra space I ended up with after the paste/awk.
Thanks yazu, I had been up late for a few nights trying to figure it out and it is great to finally have it resolved. Smilie
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to compare 2 files and update one?

Hi, I have got 2 files which i need to compare and append based on the below conditions. file 1: File 1 has data in the following format 4300 2356 C234 5689 5500 2345 File 2 has data in the same fomat 4300 49 5555 12345 Now i need to compare the first 4 bytes in each line... (4 Replies)
Discussion started by: roy121
4 Replies

2. Shell Programming and Scripting

Compare to flat files using awk

compare to flat files using awk .but in 4th field contains non ordered substring. how to do that. file1.txt john|0.0|4|**:25;JP:50;UY:25 file2.txt andy|0.0|4|JP:50;**:25;UY:25 (4 Replies)
Discussion started by: veeruasu
4 Replies

3. Shell Programming and Scripting

Compare values in two files. For matching rows print corresponding values from File 1 in File2.

- I have two files (File 1 and File 2) and the contents of the files are mentioned below. - I am trying to compare the values of Column1 of File1 with Column1 of File2. If a match is found, print the corresponding value from Column2 of File1 in Column5 of File2. - I tried to modify and use... (10 Replies)
Discussion started by: Santoshbn
10 Replies

4. Shell Programming and Scripting

Compare two files based on values of fields.

Hi All, I have two files and data looks like this: File1 Contents #Field1,Field2 Dist_Center_file1.txt;21 Dist_Center_file3.txt;20 Dist_Center_file2.txt;20 File2 Contents (*** No Header ***) Dist_Center_file1.txt;23 Dist_Center_file2.txt;20 Dist_Center_file3.txt;20 I have... (4 Replies)
Discussion started by: Hangman2
4 Replies

5. Shell Programming and Scripting

awk to compare flat files and print output to another file

Hello, I am strugling from quite a some time to compare flat files with over 1 million records could anyone please help me. I want to compare two pipe delimited flat files, file1 with file2 and output the unmatched rows from file2 in file3 Sample File1: ... (9 Replies)
Discussion started by: suhaeb
9 Replies

6. Shell Programming and Scripting

Compare 2 flat files

Hi Frnds, I have a flat file with millions of records. . Now I on this. (I prefer for AWK as its gives good performance.) Old_file.txt ------------------ 1 gopi ase .... 2 arun pl ... 3 jack sutha .. 4 peter pm .. ... New_file.txt --------------- 4 peter pm .. .. ... (12 Replies)
Discussion started by: Gopal_Engg
12 Replies

7. Shell Programming and Scripting

Compare 2 flat files

Hi Gurus, I searched the forum but didnt get much info. I want to compare 2 files. 1)Newfile comes today with 2)Old file of previous day. The files are same ,just the new files might have new records sometimes. So I want to capture these new records in another file. Can anyone help... (5 Replies)
Discussion started by: ganesh123
5 Replies

8. Shell Programming and Scripting

How to compare two flat files and get changed data

Hi, I need to compare two flat files (yesterday & today's data) and get only the changed data from flat files. In flat file i dont have data column or anything its just a string data in flat file.Can any one please let me know the script With Regds Shashi (3 Replies)
Discussion started by: jtshashidhar
3 Replies

9. Shell Programming and Scripting

How to compare data in two flat files and update them?

Hi All, I am giving an example similar to the problem I have. I have two data files of 10 columns each in which fields are delimited by comma(,). I need to compare compare the two files using the uniq col(col3). If there are any records in file1 and are not in file2 then I have check the value... (3 Replies)
Discussion started by: rajus19
3 Replies

10. UNIX for Dummies Questions & Answers

compare update time of files

Hi, does anyone know of a way to compare files update time (not only days - also hours and minutes) (command? scripts? perl scripts?) Dori (8 Replies)
Discussion started by: dorilevy
8 Replies
Login or Register to Ask a Question