Paste two file side by side together based on specific pattern match problem


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Paste two file side by side together based on specific pattern match problem
# 1  
Old 12-17-2009
Paste two file side by side together based on specific pattern match problem

Input file_1:
Code:
P78811
P40108
O17861
Q6NTW1

P40986
Q6PBK1

P38264

Q6PBK1

Q9CZ49

Q1GZI0

Input file_2:
Code:
P78811   From UK
Q6PBK1     From Australia    
O17861   From British

Desired output file:
Code:
P78811   P78811  From UK
P40108
O17861   O17861  From British
Q6NTW1

P40986
Q6PBK1     Q6PBK1     From Australia    

P38264

Q6PBK1     Q6PBK1     From Australia    

Q9CZ49

Q1GZI0

File_1 consider the back-bone of my desire output file. The data at File_1 must be presented at the desired output file no matter is empty line or data that don't match with file 2.
Besides that, the output data sequence must follow exactly like file_1. Some data at file 1, might apprear more than once as well. My purpose is to paste those file_2 data that got match with file_1 data to the output file.
Thanks for any suggestion.
# 2  
Old 12-17-2009
Code:
gawk 'FNR==NR{
    o=$1;$1=""
    a[o]=$0
    next
}
($1 in a) { print $1,a[$1] }
(!($1 in a)) {print} ' file2 file1

# 3  
Old 12-17-2009
Quote:
Originally Posted by ichigo
Code:
gawk 'FNR==NR{
    o=$1;$1=""
    a[o]=$0
    next
}
($1 in a) { print $1,a[$1] }
(!($1 in a)) {print} ' file2 file1

That doesn't seem to give the desired output.

Code:
awk '
 NR == FNR { A[$1] = $1 "\t" $0; next }
 { print ($1 in A)?A[$1]:$0 }
' file2 file1

P78811  P78811   From UK
P40108
O17861  O17861   From British
Q6NTW1

P40986
Q6PBK1  Q6PBK1     From Australia

P38264

Q6PBK1  Q6PBK1     From Australia

Q9CZ49

Q1GZI0

# 4  
Old 12-17-2009
Code:
nawk 'NR==FNR{_[$1]=$0}
        NR!=FNR{print $1" "_[$1]}' b a

# 5  
Old 12-18-2009
Hi scottn,
Thanks for your reminding Smilie
Can I ask you what is the meaning of "?" and "A[$1]:$0" in your awk code?
Code:
awk '
 NR == FNR { A[$1] = $1 "\t" $0; next }
 { print ($1 in A)?A[$1]:$0 }
' file2 file1

Thanks.

---------- Post updated at 05:24 AM ---------- Previous update was at 05:17 AM ----------

Hi summer,
Can I ask you how we can determine to use awk, nawk, or gawk?
As I know, Awk is the orignal awk. Nawk is new_awk and gawk the gnu_awk. The gnu_awk can do most, but is not available everywhere. So best is to use only things which nawk can do, because if that is not installed, then the system is not well anyway.
The "_" at your code script, is it represent everything inside the data?
Thanks for suggestion Smilie
# 6  
Old 12-18-2009
Hi Patrick.

Quote:
Originally Posted by patrick87
Hi scottn,
Thanks for your reminding Smilie
Can I ask you what is the meaning of "?" and "A[$1]:$0"?

It's really just shorthand for an if-then-else statement. Search for "The Conditional Statement"
here


---------- Post updated at 05:24 AM ---------- Previous update was at 05:17 AM ----------
Quote:
Originally Posted by patrick87
Can I ask you how we can determine to use awk, nawk, or gawk?
I use awk because it is generally a copy of or link to nawk or gawk, so I don't need to know or think about which one is installed.

i.e. On AIX it's a link to nawk, on Linux awk and nawk are probably both linked to gawk.

The only exception is on Solaris, where you should use nawk, /usr/xpg4/bin/awk or gawk (if it's available) instead of /usr/bin/awk.

_ is just a cool name to use for a variable :-)
# 7  
Old 12-18-2009
Thanks a lot, scottn.
I understand what is the back story behind your code now Smilie
Thanks ^^
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 run 2 python scripts at the same time side by side on the same line?

Could I run 2 python scripts at the same time side by side output on the same line in this same format but with scripts? from itertools import izip_longest with open("file1") as textfile1, open("file2") as textfile2: for x, y in izip_longest(textfile1, textfile2, fillvalue=""): x =... (4 Replies)
Discussion started by: bigvito19
4 Replies

2. UNIX for Dummies Questions & Answers

Paste many files together side by side

Hi, Thank you for your help in advance :D. I have thousands of files like... file01 file02 file03 . . . file6324 I would like to paste every other file side by side so it looks like file01 file02 file03 file04 ...e.t.c file6323 file6324 (3 Replies)
Discussion started by: shaz1990
3 Replies

3. Shell Programming and Scripting

How to print contents side by side of a file ?

Hi Team, I have input like Input file.txt Contents: Total: 939720704 bytes Total: 521142272 bytes Total: 262144 bytes Total: 786432 bytes Total: 9043968 bytes Total: 9371648 bytes I need out put like the content of file should be side by side.that is 1st line beside... (3 Replies)
Discussion started by: rocking77
3 Replies

4. Shell Programming and Scripting

AWK to merge multiple files side by side

I have about 100s of files of type text in a known directory. I want to merge all files side by side. Number of lines in all the files will remain same. For example file1 contains cat dog File 2 contains rat mat Output file should be cat rat dog mat Using awk I was able to... (5 Replies)
Discussion started by: kanthrajgowda
5 Replies

5. Shell Programming and Scripting

printing 3 files side by side based on similar values in rows

Hi I'm trying to compare 3 or more files based on similar values and outputting them into 3 columns. For example: file1 ABC DEF GHI file2 DEF DER file3 ABC DER The output should come out like this file1 file2 file3 ABC ABC (4 Replies)
Discussion started by: zerofire123
4 Replies

6. Shell Programming and Scripting

Need help on appending info from one file to other side by side

Hi All, I have a file abc.xls which contains data applciation usage merlin 24000 hermes 48000 and my script generates an output to a file def.xls applciation usage merlin 23000 hermes 50000 Daily i want to schedule this script to run and I need the second column to be appended to the... (2 Replies)
Discussion started by: jagadish_gaddam
2 Replies

7. Web Development

Cannot access Apache web server from Wan side, only Lan side.

I have installed WAMPSERVER 2.0 on my windows vista x64 system but still am having issues with getting the webserver to be seen outside my local network. It is working fine within my local network. Been through several setup tutorials so far, no dice still. For testing purposes I have... (1 Reply)
Discussion started by: davidmanvell
1 Replies

8. Shell Programming and Scripting

How to Merge / combine / join / paste 2 text files side-by-side

I have 2 text files, both have one simple, single column. The 2 files might be the same length, or might not, and if not, it's unknown which one would be longer. For this example, file1 is longer: ---file1 Joe Bob Mary Sally Fred Elmer David ---file2 Tomato House Car... (3 Replies)
Discussion started by: cajunfries
3 Replies

9. Shell Programming and Scripting

Script to place selected columns from a group of files side by side in a new file

Hi Everyone, I need a shell/perl script to bring selected columns from all the files located in a directory and place them in a new file side by side. File1: a b c d 2 3 4 5 f g h i .......... File2: I II III IV w x y z .............. and so on many files are there...... (8 Replies)
Discussion started by: ks_reddy
8 Replies

10. Shell Programming and Scripting

How to print two sql query outputs side by side in excel

Hi, I have to sql queries like select sno,sname from temptable; select deptno,dname from depttable; In excel i want to specify the column number to which my output should be displayed. please help me in this... thanks in advance... (6 Replies)
Discussion started by: prasee
6 Replies
Login or Register to Ask a Question