combining two files


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers combining two files
# 15  
Old 09-26-2008
here is the exact data i am using:
FILENAME1 XXXXX FOO BAR Date: 09/01/08
FILENAME1 XXXXX FOO BAR Date: 09/02/08
FILENAME1 XXXXX FOO BAR Date: 09/03/08
FILENAME2 XXXXX FOO BAR Date: 09/01/08
FILENAME2 XXXXX FOO BAR Date: 09/02/08

FILENAME1 Open 3:45 3:43
FILENAME1 Closed 0:00 0:01
FILENAME1 Total 0:15 0:12
FILENAME1 Open 0:00 0:04
FILENAME1 Total 4:00 4:00
FILENAME2 Open 3:45 3:38
FILENAME2 Closed 0:00 0:00
FILENAME2 Total 0:15 0:14

i am getting
FILENAME1 Open 3:45 3:43 XXXXX FOO BAR Date: 09/02/08
FILENAME1 Closed 0:00 0:01 XXXXX FOO BAR Date: 09/02/08
FILENAME1 Total 0:15 0:12 XXXXX FOO BAR Date: 09/02/08
FILENAME1 Open 0:00 0:04 XXXXX FOO BAR Date: 09/02/08
FILENAME1 Total 4:00 4:00 XXXXX FOO BAR Date: 09/02/08
FILENAME2 Open 3:45 3:38 XXXXX FOO BAR Date: 09/02/08
FILENAME2 Closed 0:00 0:00 XXXXX FOO BAR Date: 09/02/08
FILENAME2 Total 0:15 0:14 XXXXX FOO BAR Date: 09/02/08


I want
FILENAME1 Open 3:45 3:43 XXXXX FOO BAR Date: 09/01/08
FILENAME1 Closed 0:00 0:01 XXXXX FOO BAR Date: 09/01/08
FILENAME1 Total 0:15 0:12 XXXXX FOO BAR Date: 09/01/08
FILENAME1 Open 0:00 0:04 YYYYY FOO BAR Date: 09/02/08
FILENAME1 Total 4:00 4:00 YYYYY FOO BAR Date: 09/02/08
FILENAME2 Open 3:45 3:38 ZZZZZ FOO BAR Date: 09/03/08
FILENAME2 Closed 0:00 0:00 ZZZZZ FOO BAR Date: 09/03/08
FILENAME2 Total 0:15 0:14 ZZZZZ FOO BAR Date: 09/03/08
# 16  
Old 09-26-2008
this script you have me first is giving me what i need

#!/bin/sh
awk 'NR == FNR {
t = $1
sub(/[^ \t]* /, "")
_[t] = $0
next
}
($1 in _ && /Total/ && $0 = $0 FS _[$1]) || 1
' bbb xxx

only thing is the date is not repeating but changing fine:
FILENAME1 Open 3:45 3:43
FILENAME1 Closed 0:00 0:01
FILENAME1 Total 0:15 0:12 XXXXX FOO BAR Date: 09/01/08
FILENAME1 Open 0:00 0:04
FILENAME1 Total 4:00 4:00 YYYYY FOO BAR Date: 09/02/08
FILENAME2 Open 3:45 3:38
FILENAME2 Closed 0:00 0:00
FILENAME2 Total 0:15 0:14 ZZZZZ FOO BAR Date: 09/03/08

I can use this not a problem.. if you have the time can you pl expalin this code to me. So that i can modify and maintain it thanks!!!!!!!!
# 17  
Old 09-26-2008
I'll try to explain the script after the requirement has been met.
I'm not sure about the logic though ...
It seams something like this (the code assumes that the first column in both files is ordered and that the number of records in the first file is equal to the number of records matching the Total pattern in the second one):

Code:
awk 'NR == FNR {
  sub(/[^ \t]* /,"")
  r[FNR] = $0
  next
  }
$0 = $0FS r[c?c:++c]  
/Total/ { c++ }
' file1 file2


For example:

Code:
$ head file[12]
==> file1 <==
FILENAME1 XXXXX FOO BAR Date: 09/01/08
FILENAME1 XXXXX FOO BAR Date: 09/02/08
FILENAME1 XXXXX FOO BAR Date: 09/03/08
FILENAME2 XXXXX FOO BAR Date: 09/01/08
FILENAME2 XXXXX FOO BAR Date: 09/02/08

==> file2 <==
FILENAME1 Open 3:45 3:43
FILENAME1 Closed 0:00 0:01
FILENAME1 Total 0:15 0:12
FILENAME1 Open 0:00 0:04
FILENAME1 Total 4:00 4:00
FILENAME2 Open 3:45 3:38
FILENAME2 Closed 0:00 0:00
FILENAME2 Total 0:15 0:14 
$ awk 'NR == FNR {
  sub(/[^ \t]* /,"")
  r[FNR] = $0
  next
  }
$0 = $0FS r[c?c:++c]
/Total/ { c++ }
' file1 file2
FILENAME1 Open 3:45 3:43 XXXXX FOO BAR Date: 09/01/08
FILENAME1 Closed 0:00 0:01 XXXXX FOO BAR Date: 09/01/08
FILENAME1 Total 0:15 0:12 XXXXX FOO BAR Date: 09/01/08
FILENAME1 Open 0:00 0:04 XXXXX FOO BAR Date: 09/02/08
FILENAME1 Total 4:00 4:00 XXXXX FOO BAR Date: 09/02/08
FILENAME2 Open 3:45 3:38 XXXXX FOO BAR Date: 09/03/08
FILENAME2 Closed 0:00 0:00 XXXXX FOO BAR Date: 09/03/08
FILENAME2 Total 0:15 0:14  XXXXX FOO BAR Date: 09/03/08

# 18  
Old 09-26-2008
That is indeed correct..however i did some analysis and found that there was a summary record in the input file that was creating one extra Total record in file2!!!!

I will think of a way to filter this and then what you state will be true:

the first column in both files is ordered and that the number of records in the first file is equal to the number of records matching the Total pattern in the second one.

thanks
# 19  
Old 09-26-2008
yes i removed the summary and the code ran fine, It produces the exact output,. I will have to omit the summary in my extract or this code has to omit the last Total block everytime the filename changes. (a total of 6 lines..open..closed...et,. Total) ..
# 20  
Old 09-26-2008
What's the format of the summary line?
Could you give an example of two blocks, summary line included?
# 21  
Old 09-26-2008
The summary line is the same format except that its the last 6 lines of each file.so everytime the filename changes.. the last 6 lines are summary lines and wont have a entry in the first file.

FILENAME1 XXXXX FOO BAR Date: 09/01/08
FILENAME1 XXXXX FOO BAR Date: 09/02/08
FILENAME1 XXXXX FOO BAR Date: 09/03/08
FILENAME2 XXXXX FOO BAR Date: 09/01/08
FILENAME2 XXXXX FOO BAR Date: 09/02/08

FILENAME1 Open 3:45 3:43
FILENAME1 Closed 0:00 0:01
FILENAME1 Total 0:15 0:12
FILENAME1 Open 0:00 0:04
FILENAME1 Total 4:00 4:00
FILENAME1 Open 4:00 4:00
FILENAME1 Closed 4:00 4:00
FILENAME1 Other 4:00 4:00
FILENAME1 Other 4:00 4:00
FILENAME1 Other 4:00 4:00
FILENAME1 Total 4:00 4:00
FILENAME2 Open 3:45 3:38
FILENAME2 Closed 0:00 0:00
FILENAME2 Total 0:15 0:14
FILENAME2 Open 4:00 4:00
FILENAME2 Closed 4:00 4:00
FILENAME2 Other 4:00 4:00
FILENAME2 Other 4:00 4:00
FILENAME2 Other 4:00 4:00
FILENAME2 Total 4:00 4:00

thanks
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Combining files from different directories

I have two directories, each have 27 files with same name and now I want to combine them one by one into another directory with same names. I dont know how to use "and" for the "for loop" so it will not go in the circle. so my code has a problem I dont know how to fix :wall::wall::wall::wall:... (15 Replies)
Discussion started by: A-V
15 Replies

2. Shell Programming and Scripting

Combining files

Hi I have about 108 files (text files) that end with .avg and each one of these files have a distinct name that describes what is in the file. In each file there is a set of 80 values that are tab separated. I want to combine all 108 files into ONE main file. So each file is named: 1.avg... (5 Replies)
Discussion started by: phil_heath
5 Replies

3. Shell Programming and Scripting

Combining 2 files

i am having 2 files like this file 1 1, 2, 3, 4, file2 5, 6, 7, 8, what i want do is like this i want to put all the contents for file 2 after file 1,means adding column in file1 (5 Replies)
Discussion started by: sagar_1986
5 Replies

4. UNIX for Dummies Questions & Answers

Need Help in reading N days files from a Directory & combining the files

Hi All, Request your expertise in tackling one requirement in my project,(i dont have much expertise in Shell Scripting). The requirement is as below, 1) We store the last run date of a process in a file. When the batch run the next time, it should read this file, get the last run date from... (1 Reply)
Discussion started by: dsfreddie
1 Replies

5. Shell Programming and Scripting

Matching and combining two files

Hi there, I have two files. What I want to do is search for the values in second field of file1 in the 6th field of the file2 and of they match to add the fields 1-5 of the file2 at the end of the line of file1 with a comma before. E.g File1 FWB,CHUAGT87HUMAS/BUD01,REUAIR08KLM... (3 Replies)
Discussion started by: sickboy
3 Replies

6. Shell Programming and Scripting

Combining two files

I have two files and I need to combine (not append - but combine a row to a row) eg: File1: apples grapes oranges lemons File2: red green orange yellow After combining, the file should look like: (the second column should start at a specific byte) apples red grapes green... (7 Replies)
Discussion started by: hemangjani
7 Replies

7. Shell Programming and Scripting

Combining Two Files

Could someone help me reduce the number of runs for a shell program I created? I have two text files below: $ more list1.txt 01 AAA 02 BBB 03 CCC 04 DDD $ more list2.txt 01 EEE 02 FFF 03 GGG I want to combine the lines with the same number to get the below: 01 AAA 01 EEE 02... (4 Replies)
Discussion started by: stevefox
4 Replies

8. Shell Programming and Scripting

Combining Two Files

I have two files which contain data from two different transactions in the same format: <Name> - <Count> My goal is to end up with data in this format after combining the two: <Name> - <Count1> - <Count2> Is this possible to do with awk, or is there something better? Thanks... (3 Replies)
Discussion started by: bat711
3 Replies

9. UNIX for Dummies Questions & Answers

Combining files

Hi, is there a way to combine 2 files together, joining line 1 from file A with line 1 from file B, line 2 from A with line 2 from B etc. File A File B 1 4 2 5 3 6 Combined result = File C 14 25 36 (2 Replies)
Discussion started by: Enda Martin
2 Replies

10. UNIX for Dummies Questions & Answers

combining files

how will i combine these 2 files below, with the desired output specified below: file1: one two three four file2: red blue yellow green file3: aaa bbb ccc ddd (3 Replies)
Discussion started by: apalex
3 Replies
Login or Register to Ask a Question