awk script to match and print


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting awk script to match and print
# 1  
Old 04-21-2015
awk script to match and print

I need a script that will search for a string from column 1 in file A and when the string matches the last column in file B, print columns 1, 2 (file A) and columns 2, 3 (file B).

input

file A
Code:
stringtomatch1  a
stringtomatch2  a
stringtomatch3  b

file B
Code:
junkcolumn1 printcolumn2 printcolumn3 junkcolumn2 junkcolumn3 junkcolumn4 junkcolumn5 stringtomatch1
junkcolumn1 printcolumn2 printcolumn3 junkcolumn2 junkcolumn3 junkcolumn4 junkcolumn5 stringtomatch2
junkcolumn1 printcolumn2 printcolumn3 junkcolumn2 junkcolumn3 junkcolumn4 junkcolumn5 stringtomatch3

output
Code:
stringtomatch1 a printcolumn2 printcolumn3 
stringtomatch2 a printcolumn2 printcolumn3 
stringtomatch3 b printcolumn2 printcolumn3

# 2  
Old 04-21-2015
Hi,
Try :
Code:
awk 'NR == FNR {A[$1]=$2;next};$NF in A {print $NF,A[$NF],$2,$3}' fileA fileB

Regards.
This User Gave Thanks to disedorgue For This Post:
# 3  
Old 04-21-2015
One could try something like:
Code:
while read MATCH VAR
do
   awk -v STR1=$MATCH OUT1=$VAR '{/STR1/}{print STR1" "OUT1" "$2" "$3}' fileB
done<fileA

hth
# 4  
Old 04-21-2015
Thanks disedorgue. This seems to work for me

Code:
awk 'NR == FNR {A[$1]=$2;next};$NF in A {print $NF,A[$NF],$2,$3}' fileA fileB

# 5  
Old 04-21-2015
If the files are sorted, an alternative is:
Code:
join -1 1 -2 8 -o 0,1.2,2.2,2.3 fileA fileB

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

awk script to match string and print status

Dear team, Need support to built awk script for below requirement Input file LOTC cluster state: ------------------- Node safNode=SC_2_1 joined cluster | Node safNode=SC_2_2 joined cluster | Node safNode=PL_2_3 fail cluster | AMF cluster state: ------------------... (16 Replies)
Discussion started by: shanul karim
16 Replies

2. Shell Programming and Scripting

awk to print match or non-match and select fields/patterns for non-matches

In the awk below I am trying to output those lines that Match between file1 and file2, those Missing in file1, and those missing in file2. Using each $1,$2,$4,$5 value as a key to match on, that is if those 4 fields are found in both files the match, but if those 4 fields are not found then missing... (0 Replies)
Discussion started by: cmccabe
0 Replies

3. Shell Programming and Scripting

awk Match and Print

I have the following script in place that will print the values of FileB when the first column matches File A's first column. awk 'NR == FNR {A=$2;next};$1 in A {print $1,$NF,$2,$3,A}' FileA FileB Input FileA 3013 4 FileB 3013 2009 03 JUNK 43 Output 3013 43 2009 03 (2 Replies)
Discussion started by: ncwxpanther
2 Replies

4. Shell Programming and Scripting

Using awk for match and print

I have the need to match up the lat / lon from a fileA with the lat / lon and value from fileB. fileA is a small subset of fileB I have the following awk script but it prints out all the contents from fileB. I only need the matches. awk 'FNR==NR {A=$NF; next} {A=$NF} END{for(i in A) printf... (10 Replies)
Discussion started by: ncwxpanther
10 Replies

5. Shell Programming and Scripting

awk if condition match and print all

Hi, I am trying to do something like this ... I use awk to match a pattern, and then print out all col. My code is : awk '{if ($1 ==300) print $1,$2-'$sbin7',$3}' tmp.txt output= 300 2 whereby sbin7=2, The thing is, I want to print all col and row, not just the matched line/row only, but... (10 Replies)
Discussion started by: horsepower
10 Replies

6. Shell Programming and Scripting

awk print pattern match line and following lines

Data: Pattern Data Data Data Data Data Data Data Data Data ... With awk, how do I print the pattern matching line, then the subsequent lines following the pattern matching line. Varying number of lines following the pattern matching line. (9 Replies)
Discussion started by: dmesserly
9 Replies

7. Shell Programming and Scripting

Print strings that match pattern with awk

I have a file with many lines which contain strings like .. etc. But with no rule regarding field separators or anything else. I want to print ONLY THE STRING from each line , not the entire line !!! For example from the lines : Flow on service executed with success in . Performances... (5 Replies)
Discussion started by: black_fender
5 Replies

8. Shell Programming and Scripting

AWK match and print

I have thousands of tables compiled in a single txt document that I'm parsing with AWK. Scattered throughout the document in random sections I would like to parse out the sections that look like this: 1 Seq. Descrição do bem Tipo do bem Valor do bem (R$) 2 1 LOCALIZADO ANA RUA PESSEGO N 96... (3 Replies)
Discussion started by: daveyabe
3 Replies

9. UNIX for Dummies Questions & Answers

Awk print all lines on match?

Ok so I can use awk to match a pattern and print the whole line with print $0. Is there any way to just tell awk to print every line of output when the pattern matches? I'm having it wait for the word error and then print that entire line. But what I actually need to see is all the following... (9 Replies)
Discussion started by: MrEddy
9 Replies

10. Shell Programming and Scripting

AWK, print no of records after pattern match.

Hi ALL :). i have a file, cat 3 + dog 5 + rat 6 - i want to print no of record having pattern "+". thanks in advance :confused:. (2 Replies)
Discussion started by: admax
2 Replies
Login or Register to Ask a Question