awk or grep to search one column and output the other


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting awk or grep to search one column and output the other
# 1  
Old 07-20-2013
awk or grep to search one column and output the other

Hello,

it would be great if someone can help me with the following:
I want to search for the rows from fileA in column 1 of fileB and output column 2 of fileB if found in fileC. In the moment I search within the complete file. How can I change the code so only column 1 is searched?

Code:
cat fileA | while read row ; do
grep "$row" fileB | awk -F"\t" '{print $2}' > fileC


Last edited by Scott; 07-20-2013 at 04:47 AM.. Reason: Code tags
# 2  
Old 07-20-2013
This seems to have been asked (in one guise or another) a million times.

Code:
$ awk 'NR==FNR{A[$0]=1; next} A[$1] {print $2}' fileA fileB > fileC

The horizontal tab (\t) is already a default field separator, so unless you plan to explicitly count fields using it there's no need to specify it with -F.
# 3  
Old 07-20-2013
Thanks for the fast reply. I now have:

Code:
cat fileA | while read row ; do
$ awk 'NR==FNR{A[$1]=1; next} A[$1] {print $2}' fileA fileB > fileC

The "$" seems to produce an error. What does the "A" stand for? And why "=1"? Shouldnt it be "=row"?

Sorry, I am very new to Shell Programming..

---------- Post updated at 03:34 AM ---------- Previous update was at 03:28 AM ----------

I need the "do" command because each search produces another output-file which is processed after..

Last edited by Scott; 07-20-2013 at 05:32 AM.. Reason: Code tags
# 4  
Old 07-20-2013
$ signifies a command prompt, it's not part of the code.

You don't need cat ... | while.

Just
Code:
awk 'NR==FNR{A[$0]=1; next} A[$1] {print $2}' fileA fileB > fileC

A is just a variable, call it what you want:
Code:
awk 'NR==FNR{row[$0]=1; next} row[$1] {print $2}' fileA fileB > fileC

=1 is just to record that the value of the record ($0) from the first file (FR==FNR) has been stored. This is used later (A[$1]) to test against the first field of the second file, in which case $2 from that file is displayed.
# 5  
Old 07-20-2013
Hi Scott can I send you an eMail? I tried but " o be able to send PMs your post count must be 10 or greater."

---------- Post updated at 04:47 AM ---------- Previous update was at 04:24 AM ----------

Would like to send you the data-file and the script to figure it out whats wrong..
# 6  
Old 07-20-2013
It would be better if you posted the script, and a representative sample of the data file here, obfuscating any sensitive data before doing so.
This User Gave Thanks to Scott For This Post:
# 7  
Old 07-20-2013
Hi Scott, thanks again for your help! I finally figured it out - found a very simple solution: I just had to add an ^ before "$row" to only search within the first column..

Code:
cat fileB | while read row ; do grep ^"$row" fileA | awk -F"\t" '{print $2}' > fileC


Last edited by Scott; 07-20-2013 at 05:31 PM.. Reason: Code tags
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Grep from FileA, search in FileB, edit FileC > Output

Hello, Similar question to my previous posts. I am sorry for the trouble... Just checked my old threads but I can not implement any solution into this case.. My aim is to grab each line in fileA, check it in fileB and merge with fileC (tab separated) in corresponding line as given below: FileA:... (2 Replies)
Discussion started by: baris35
2 Replies

2. Shell Programming and Scripting

Search for string in column using variable: awk

I'm interested to match column pattern through awk using an external variable for data: -9 1:751343:T:A -9 0 T A 0.726 -5.408837e-03 9.576603e-03 7.967536e-01 5.722312e-01 -9 1:751756:T:C -9 0 T C 0.727 -5.360458e-03 9.579447e-03 7.966977e-01 5.757858e-01... (7 Replies)
Discussion started by: genome
7 Replies

3. Shell Programming and Scripting

Search/grep on row and column wise

Hello, I have a comma seperate metadata as follows: CITY ,COUNTY,STATE,COUNTRY NEW_YORK,NYC ,NY ,USA NEWARK ,ESSEX ,NJ ,USA CHICAGO ,COOK ,IL ,USA SEATTLE ,MINER ,WA ,USA In my process, I get two key values ie CITY NAME (can be one of the... (7 Replies)
Discussion started by: calredd
7 Replies

4. Shell Programming and Scripting

awk search pattern in column

Want to search a pattern in column using the below command which not helpful awk -F"\|" '$1 == '"${VAR}"' {print $1,$2}' file how to search using "==" with variable other than the below case. awk -F"\|" '$1 ~ /'"${VAR}"'/ {print $1,$2}' file (14 Replies)
Discussion started by: Roozo
14 Replies

5. Shell Programming and Scripting

How to awk or grep the last column in file when date on column contains spaces?

Hi have a large spreadsheet which has 4 columns APM00111803814 server_2 96085 Corp IT Desktop and Apps APM00111803814 server_2 96085 Corp IT Desktop and Apps APM00111803814 server_2 96034 Storage Mgmt Team APM00111803814 server_2 96152 GWP... (6 Replies)
Discussion started by: kieranfoley
6 Replies

6. Shell Programming and Scripting

awk : search last index in specific column

I am trying to search a given text in a file and find its last occurrence index. The task is to append the searched index in the same file but in a separate column. I am able to accomplish the task partially and looking for a solution. Following is the detailed description: names_file.txt ... (17 Replies)
Discussion started by: tarun.trehan
17 Replies

7. Shell Programming and Scripting

To search a word in particular column using awk

I have a data in a file like this 1 praveen bmscollege 2 shishira bnmit 3 parthiva geethamce I want to search "praveen" using awk command i tried like this but i did not get awk `$2="praveen" {print $0} ` praveen.lst can anyone help me solving this problem in... (2 Replies)
Discussion started by: praveenhegde
2 Replies

8. Shell Programming and Scripting

AWK in column search

Hi friends , I am new to unix ,need your help to fix this there is a ~ deliminated file. how to find the 5th column of the row. awk 'print $5 ' abc.txt it doesnot work . it works for table deliminated file. My data file is like the following manner. abc.txt -------- a~b~c~d~e~f... (3 Replies)
Discussion started by: imipsita.rath
3 Replies

9. Shell Programming and Scripting

Search for a column by name in awk

Hi, I have a file that has many columns. Let us say "Employee_number" "Employee_name" "Salary". I want to display all entries in a column by giving all or part of the column name. For example if I input "name" I want all the employee names printed. Is it possible to do this in a simple manner... (2 Replies)
Discussion started by: kskkarthik
2 Replies
Login or Register to Ask a Question