Searching for a pattern in a file...


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Searching for a pattern in a file...
# 1  
Old 11-24-2010
Searching for a pattern in a file...

The problem is similar to my yesterday post
I Would like an awk script that does the following:
I have a file (f1) that contains
Code:
1
2
3
4
5

and another one (f2) that contains
Code:
8|a
9|b
0|c
1|d
2|e
3|f
4|g
5|h
6|i
7|j

And I'd like to get this:
Code:
1|d
2|e
3|f
4|g
5|h

I tried this but it does not work...
Code:
awk -F\| 'NR==FNR{A[$1]==$2;next} {print A[$1]}' f2 f1

(I get 5 empty lines :/)
# 2  
Old 11-24-2010
Code:
$ grep -f f1 f2
1|d
2|e
3|f
4|g
5|h

or
Code:
$ awk -F\| 'NR==FNR{A[$1]++;next} A[$1]' f1 f2

or
Code:
awk -F\| 'NR==FNR{A[$1]=$0;next} $1 in A { print A[$1] }' f2 f1


Last edited by Chubler_XL; 11-24-2010 at 05:08 PM..
This User Gave Thanks to Chubler_XL For This Post:
# 3  
Old 11-24-2010
Thank you Chubler_XL, The second example script is what I was desperatly searching for Smilie

(For the record, I was already using grep but I had to sort datas afterward)
# 4  
Old 11-24-2010
Code:
awk -F\| 'NR==FNR{A[$1];next} $1 in A ' file1 file2

# 5  
Old 11-24-2010
Tried a few shorter versions that work for test data but fail in other situations:

Works as long as no duplicate entries in f1 or f2
Code:
awk -F\| 'A[$1]++' f1 f2

Works as long as no duplicate entries in f1
Code:
awk -F\| 'A[$1]++==(NR>=FNR)' f1 f2


Last edited by Chubler_XL; 11-24-2010 at 11:20 PM..
# 6  
Old 11-24-2010
Or you could use Perl -

Code:
$ 
$ 
$ cat f1
1
2
3
4
5
$ 
$ cat f2
8|a
9|b
0|c
1|d
2|e
3|f
4|g
5|h
6|i
7|j
$ 
$ 
$ perl -F\| -lane '$ARGV eq "f1" ? $x{$F[0]}++ : do{print if $x{$F[0]}}' f1 f2
1|d
2|e
3|f
4|g
5|h
$ 
$ 

tyler_durden
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Searching the file of below pattern through perl script from different location

Hi All, I am creating a small per script but I am getting the error "Unable to open file because No such file or directory".My code is below.I am trying to go into the below location so using chdir and then seraching the log files of below pattern. #!/usr/bin/perl -w chdir... (3 Replies)
Discussion started by: anuragpgtgerman
3 Replies

2. UNIX for Dummies Questions & Answers

Searching for a pattern from filenames stored in a file

Hi, I have got some 10 filenames stored in a file or displayed in the console as a result of some query i made.. Now I need to open each of these files and search for a pattern in these 10 files.. Can someone help me with this? Thanks, Jean (9 Replies)
Discussion started by: jeanjkj
9 Replies

3. Shell Programming and Scripting

Remove the footer from a flat file by searching a pattern

Hi, I have more than 30,000 records in a flat file. I want to remove footer from the file by searching a string pattern for the footer. Example.... let the flat file test.dat contains below records. record1 record2 record3 .. .. .. record31000 Total records 31000 I want to remove the... (6 Replies)
Discussion started by: gani_85
6 Replies

4. UNIX for Dummies Questions & Answers

Searching the date pattern in a file

Hi, I would like to search the pattern based on the date like "2010/08/15". I tried using / in the file giving /<<pattern>>. when i tried this it turns to /2010/+8, but not going to the pattern what ever i want. This is how the data in the file. INFO | jvm 1 | 2010/05/26 13:30:33... (5 Replies)
Discussion started by: venkatesht
5 Replies

5. Shell Programming and Scripting

Searching a pattern in a file.

Hi Guys, I am writing a shell script to extract only the error message from a log file. I am having difficulty in searching the highlighted text in the below code. <runtimeinfo datetime="Sun Apr 04 20:02:52 EDT 2008" docid="" source="RAWDATA" event="ERROR"... (2 Replies)
Discussion started by: prash1986
2 Replies

6. Shell Programming and Scripting

Searching a pattern in file and deleting th ewhole line containing the pattern

Hi All, Please can someone assist in the script I have made that searches a pattern in a file and delete the whole line containing the pattern. #!bin/sh # The pattern that user want to add to the files echo "Enter the pattern of the redirect" read value # check if the user has... (1 Reply)
Discussion started by: Shazin
1 Replies

7. Shell Programming and Scripting

Searching words in a file containing a pattern

Hi all, I would like to print words in a file seperated by whitespaces containing a specific pattern like "=" e.g. I have a file1 containing strings like %cat file1 The= some= in wish= born <eof> .I want to display only those words containing = i.e The= , some=,wish= ... (5 Replies)
Discussion started by: sree_123
5 Replies

8. UNIX for Advanced & Expert Users

searching one pattern in file and also counting

Hi, everybody this is my pattern in a file thomson, nicolas 5-3871 Wong, Fred 4-4123 Jones, Thomas 1-4122 Salazar, Richard 5-2522 first name and last names of people fallowed by Tele. while i am searching for pattern first name begin with 'S'... (8 Replies)
Discussion started by: ksr.test
8 Replies

9. Shell Programming and Scripting

searching pattern in another file and print

Suppose u have a file 12 22 73 another file L22D SSS S12J LLL H77K PPP J25O LOP I73S lOP K99O PLO so output shud like S12J LLL L22D SSS I73S lOP Thanks (2 Replies)
Discussion started by: cdfd123
2 Replies

10. UNIX for Advanced & Expert Users

searching for a pattern in a file and forwarding result to another

Hi, I am trying to search through a file for a particular word, then once found, I want the search to carry on for another 30 lines and append all this to a new file. For example, I search for the word "test" in hello.txt: <--some code--> <--some code--> <--some code--> test <--some more... (7 Replies)
Discussion started by: ocelot
7 Replies
Login or Register to Ask a Question