Compare 2 files yet again but with a twist


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Compare 2 files yet again but with a twist
# 1  
Old 11-20-2008
Compare 2 files yet again but with a twist

Ok so I have a file which contains 2 columns/fields and I have another file with 2 columns. The files look like:

file1:
1 33
5 345
18 2
45 1
78 31

file2:
1 c1d2t0
2 c1d3t0
3 c1d4t0
4 c1d4t0
5 c2d1t0
6 c2d1t0
7 c2d1t0
8 c2d1t0
9 c2d1t0
10 c2d1t0
11 c2d5t0
18 c3d1t0
45 c5d10t0
78 c3d12t0

---

I need to get the following result:
1 33 c1d2t0
5 345 c2d1t0
18 2 c3d1t0
45 1 c5d10t0
78 31 c3d12t0

---

I know there is an elegant awk solution but I am getting a little lost when doing the search on the first column.
# 2  
Old 11-20-2008
Use nawk or /usr/xpg4/bin/awk on Solaris:

Code:
awk 'NR == FNR { 
  _[$1] = $2 
  next 
  }
$2 = $2 FS _[$1]
' file2 file1

# 3  
Old 11-20-2008
Thank you - works perfectly!!!
# 4  
Old 11-20-2008
It seems you are dumping & combining the rows which have common first element in the row for each files
you can use join command

Quote:
join file1 file2
refer man join for more details
# 5  
Old 11-21-2008
yogi_raj: I think you didn't understand the question. join is not the solution. the above awk statement is... thanks for the effort!
# 6  
Old 11-21-2008
@radoulov:

unfortunately I didn't have access to my sun box yesterday - and now when I test it I get this:

/usr/xpg4/bin/awk: syntax error Context is:
>>> NR == FNR {_[$1] = $2 next <<<

with nawk it's:
nawk: syntax error at source line 1
context is
NR == FNR {_[$1] = $2 >>> next <<< } $2 = $2 FS _[$1]
nawk: illegal statement at source line 1
# 7  
Old 11-21-2008
You should preserve the formatting ...
Otherwise:

Code:
awk 'NR==FNR{_[$1]=$2;next}$2=$2 FS _[$1]' file2 file1

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

File Listing, with a Twist?

Greetings! I have a quick question which must be deferred to those with greater skill than myself :) In this situation, I wish to create a list of all the files on an entire partition in descending order sorted by date. I tried numerous switches for ls, and found this line to be the closest... (4 Replies)
Discussion started by: LinQ
4 Replies

2. Shell Programming and Scripting

Simple two file compare with twist

I have file1 and file2 I lookup field3 from file2 in field1 of file1 and if there is a match, output field 2,3,5 from file2. I now want to add field2 of file1 in the output. I suspect what I have to do is read the entire line of file1 into a 2 dim array? pls help. (1 Reply)
Discussion started by: tmonk1
1 Replies

3. Shell Programming and Scripting

Simple two file compare with twist

I have file1 and file2 I lookup field3 from file2 in field1 of file1 and if there is a match, output field 2,3,5 from file2. I now want to add field2 of file1 in the output. I suspect what I have to do is read the entire line of file1 into a 2 dim array? pls help. here is my code: ... (9 Replies)
Discussion started by: jack.bauer
9 Replies

4. Shell Programming and Scripting

Require compare command to compare 4 files

I have four files, I need to compare these files together. As such i know "sdiff and comm" commands but these commands compare 2 files together. If I use sdiff command then i have to compare each file with other which will increase the codes. Please suggest if you know some commands whcih can... (6 Replies)
Discussion started by: nehashine
6 Replies

5. Shell Programming and Scripting

Incrementing with a twist - please help

I'm currently trying to write a ksh or csh script that would change the name of a file found in directories and attach to the name an incrementing three digit number. I know how to write a script that will go: 000, 001, 002, 003, etc The twist is I need more increments then allowed by a 3... (11 Replies)
Discussion started by: Rust
11 Replies

6. Shell Programming and Scripting

How to merge two files with a slight twist

Hi, a brief introduction on the soundex python module(english sound comparison): import soundex.py a = "neu yorkk" b = "new york city" print soundex.sound_similar(a, b) output: 1 Suppose I want to merge two files, called mergeleft.csv and mergeright.csv Mergeleft.csv: ... (0 Replies)
Discussion started by: grossgermany
0 Replies

7. UNIX for Dummies Questions & Answers

file count with a twist

Hello Everyone, I am using the korn shell. I was hoping to find a set of commands to count files in a directory. I am using: ls /home/name/abc* | wc -l This command works fine when a file matches abc* (returns only the file count) , however when no file(s) are found I get... (2 Replies)
Discussion started by: robert4732
2 Replies

8. UNIX for Advanced & Expert Users

building a kernel (with a twist)

Hey all, I am working on a static analysis tool and I wan't to see if it can find bugs in the linux kernel, it uses LLVM framework to analyse the instructions. Long story short I need to build the kernel with a custom compiler. The compiler will create byte code files where binaries usually... (2 Replies)
Discussion started by: zigga15
2 Replies

9. UNIX for Dummies Questions & Answers

Suspending jobs (CTRL+Z) with a twist

Hi, Say for example I'm doing a very large scp transfer (which I am) and I keep stopping it with CTRL+Z because other people on my network need the bandwidth too. I can restart it no problem with fg but only if I dont reboot or anything in between. My question is... rather than stop/suspend a... (2 Replies)
Discussion started by: d11wtq
2 Replies

10. UNIX for Dummies Questions & Answers

how do I log into this machine - with a twist...

I know this topic has been covered in one form or another, but it hasn't been covered to handle my problem. I was given a Sparc4 running Solaris 2.5.1 The root password is unknown. This machine has no cdrom drive and it has no floppy drive. I tried booting into the single user mode, but... (1 Reply)
Discussion started by: xyyz
1 Replies
Login or Register to Ask a Question