awk strings search + print next column after match


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting awk strings search + print next column after match
# 1  
Old 10-24-2011
awk strings search + print next column after match

Hi,

I have a file filled with search strings which have a blank in between and look like this:

Code:
S. g. Ehr.
o. Jg.
v. d. Chijs
g. Ehr.

Now i would like to search for the strings and it also shall return the next column after the match.

Code:
awk -v FILE="search_strings.txt" 'BEGIN { while(getline < FILE) A[$1$2]=2; }{for(N=1; N<=NF; N++) if(A[$N]) print( FILENAME, $1, $N, $n+1);}'

My code failed however, how can this be done?

---------- Post updated at 12:48 PM ---------- Previous update was at 12:35 PM ----------

Quote:
Originally Posted by zaxxon
Can your grep do -A and -B?

Code:
grep -f patternfile -A1 datafile

Since I use gawk on Windows. No I can't.

Moderator's Comments:
Mod Comment Please also use code tags for data samples

Last edited by sdf; 04-02-2012 at 05:39 AM..
# 2  
Old 10-24-2011
Ok, but I deleted my answer as I just noticed that you are looking for the next column, not next row. My example would only have helped if you were looking for rows.
# 3  
Old 10-24-2011
Can you provide a sample output also?

--ahamed
# 4  
Old 10-24-2011
Quote:
Originally Posted by zaxxon
Ok, but I deleted my answer as I just noticed that you are looking for the next column, no row. My example would only have helped if you were looking for rows.
But reading this, do you need row or column? Just to clarify ^^
This is the text.

"In the meantime v. d. Chijs found the text"

The search pattern ist "v. d. Chijs" and what is needed is the search pattern plus the next column with the word "found".
# 5  
Old 10-24-2011
Like this?...
Code:
srch="v. d. Chijs"
sed "s/.*\($srch [a-z]*\) .*/\1/g" input_file

--ahamed
# 6  
Old 10-24-2011
Quote:
Originally Posted by ahamed101
Like this?...
Code:
srch="v. d. Chijs"
sed "s/.*\($srch\) \([a-z]*\) .*/\1 \2/g" input_file

--ahamed
Is there a way to do this in awk?
# 7  
Old 10-24-2011
Try this... Its nasty though!
Code:
awk -v srch="v. d. Chijs" 'BEGIN{l=length(srch)}
{t=match($0,srch);if(!t){next}$0=substr($0,t+l);print srch" "$1}' input_file

--ahamed

---------- Post updated at 04:26 AM ---------- Previous update was at 04:19 AM ----------

Or

Code:
awk -v srch="v. d. Chijs" '{for(i=1;i<=NF;i++){if(match(srch,$i)){val=$(i+1)}}}
END{print srch" "val}' input_file

--ahamed
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Use strings from nth field from one file to match strings in entire line in another file, awk

I cannot seem to get what should be a simple awk one-liner to work correctly and cannot figure out why. I would like to use patterns from a specific field in one file as regex to search for matching strings in the entire line ($0) of another file. I would like to output the lines of File2 which... (1 Reply)
Discussion started by: jvoot
1 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. UNIX for Beginners Questions & Answers

Match Strings between two files, print portions of each file together when matched ([g]awk)

I have two files and desire to use the strings from $1 of file 1 (file1.txt) as search criteria to find matches in $2 of file 2 (file2.txt). If matches are found I want to output the entire line of file 2 (file2.txt) followed by fields $2-$11 of file 1 (file1.txt). I can find the matches, I cannot... (7 Replies)
Discussion started by: jvoot
7 Replies

4. Shell Programming and Scripting

awk Print New Column For Every Two Lines and Match On Multiple Column Values to print another column

Hi, My input files is like this axis1 0 1 10 axis2 0 1 5 axis1 1 2 -4 axis2 2 3 -3 axis1 3 4 5 axis2 3 4 -1 axis1 4 5 -6 axis2 4 5 1 Now, these are my following tasks 1. Print a first column for every two rows that has the same value followed by a string. 2. Match on the... (3 Replies)
Discussion started by: jacobs.smith
3 Replies

5. Shell Programming and Scripting

Print only lines where fields concatenated match strings

Hello everyone, Maybe somebody could help me with an awk script. I have this input (field separator is comma ","): 547894982,M|N|J,U|Q|P,98,101,0,1,1 234900027,M|N|J,U|Q|P,98,101,0,1,1 234900023,M|N|J,U|Q|P,98,54,3,1,1 234900028,M|H|J,S|Q|P,98,101,0,1,1 234900030,M|N|J,U|F|P,98,101,0,1,1... (2 Replies)
Discussion started by: Ophiuchus
2 Replies

6. 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

7. Shell Programming and Scripting

Strings from one file which exactly match to the 1st column of other file and then print lines.

Hi, I have two files. 1st file has 1 column (huge file containing ~19200000 lines) and 2nd file has 2 columns (small file containing ~6000 lines). ################################# huge_file.txt a a ab b ################################## small_file.txt a 1.5 b 2.5 ab ... (4 Replies)
Discussion started by: AshwaniSharma09
4 Replies

8. Shell Programming and Scripting

exact string match ; search and print match

I am trying to match a pattern exactly in a shell script. I have tried two methods awk '/\<mpath${CURR_MP}\>/{print $1 $2}' multipath perl -ne '/\bmpath${CURR_MP}\b/ and print' /var/tmp/multipath Both these methods require that I use the escape character. I am guessing that is why... (8 Replies)
Discussion started by: bash_in_my_head
8 Replies

9. Shell Programming and Scripting

awk search column, print line

Hello. I've been banging my head against walls trying to search a comma delimited file, using awk. I'm trying to search a "column" for a specific parameter, if it matches, then I'd like to print the whole line. I've read in multiple texts: awk -F, '{ if ($4 == "string") print $0 }'... (2 Replies)
Discussion started by: Matthias03
2 Replies

10. Shell Programming and Scripting

Awk+Grep Input file needs to match a column and print the entire line

I'm having problems since few days ago, and i'm not able to make it works with a simple awk+grep script (or other way to do this). For example, i have a input file1.txt: cat inputfile1.txt 218299910417 1172051195 1172070231 1172073514 1183135117 1183135118 1183135119 1281440202 ... (3 Replies)
Discussion started by: poliver
3 Replies
Login or Register to Ask a Question