Searching a string in a file using perl


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Searching a string in a file using perl
# 1  
Old 12-21-2011
Searching a string in a file using perl

Hi

I would like to read a file using perl and search for a string (last entry). Then read that into an array and do further grep

File content for ex:

comp=a,value=30,runtime=12,type=lic
comp=d,value=15,runtime=2,type=lic
comp=a,value=90,runtime=43,type=lic
comp=e,value=78,runtime=45,type=lic

I would like to read this file and find out the last occurance of "comp=e" and "type=lic"

then read that into an array, which will have

comp=a,value=90,runtime=43,type=lic

I tried using ksh (tail -1), but since the file is huge and am using lot of greps its taking time to return the results.

Tried this simple perl script....

Code:
chomp($log);
foreach $comp ("a" "b")
{
        $var1=`grep \"comp=$comp\" $log | grep \"type=lic\" | tail -1 | cut -d\",\" -f2 | cut -d\"=\" -f2`;
        $var2=`grep \"comp=$comp\" $log | grep \""type=lic"\" | tail -1 | cut -d\",\" -f3 | cut -d\"=\" -f2`;
        chomp($var1);chomp($var2);
        print ("$comp,$var1,$var2");
}


but I would like to implement this using file handlers /array. I dont want to do multiple greps in that loop...instead read output of below in a array and then do the cut

Code:
grep \"comp=$comp\" $log | grep \"type=lic\" | tail -1

Can someone help? Thanks
# 2  
Old 12-21-2011
You may use the following program to search for multiple instances of "comp":
perl code:
  1. #! /usr/bin/perl
  2. use warnings;
  3. use strict;
  4. my ($x, @y, $val, $run, $comp);
  5. for $comp ("a", "e") {
  6.     open I, "< inputfile.txt";
  7.     for (<I>) { $x = $_ if (/^comp=$comp/ && /type=lic$/) }
  8.     close I;
  9.     @y = split /,/,$x;
  10.     $val = (split /=/,$y&#91;1])[1];
  11.     $run = (split/=/,$y&#91;2])[1];
  12.     print "$comp $val $run\n";
  13. }

Or alternatively, you may use the following perl one-liner to search for one "comp" at a time:
Code:
perl -ne '$x = $_ if (/^comp=a/ && /type=lic$/); END{@y = split /,/,$x;$v=(split /=/,$y[1])[1];$r=(split/=/,$y[2])[1];print "a $v $r\n"}' inputfile.txt

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Searching a string in a particular file name

Hello, I have a file name like FIRST_DPF_DAILY_CUST_0826152322.txt i need to extract the string after the third "_" underscore upto timestamp ends i.e CUST_0826152322 can anyone help me with the code Thank you! Regards Srikanth Sagi (3 Replies)
Discussion started by: srikanth_sagi
3 Replies

2. Shell Programming and Scripting

Searching a string stored in other file

I need to design a script which can do the following: I have two files abc.txt and constant.hmtl abc.txt contains some 5 string that I need to see if they exist in contants.html. Constants.hmtl is a very large file around 800 lines. I want to search all the strings present in file... (8 Replies)
Discussion started by: hemasid
8 Replies

3. Shell Programming and Scripting

searching each file for a string

Hi Guys... I want to search for each file that contains a particular string. e.g find . -print | xargs grep -i string_name Now my issue is the files that I search in are gzipped. Will I be able to find the string, using the above commands, even if the files are gzipped? Please... (2 Replies)
Discussion started by: Phuti
2 Replies

4. Shell Programming and Scripting

Searching a string in a file

Hi, I am new to unix shell scripting. I have a requirement. Could anyone help me writing the script for the same? Here goes the requirement: I have a config file let's say temp.config. Here is the data in the config file temp.config : ------------- name=victor age=42 state=texas... (5 Replies)
Discussion started by: badrimohanty
5 Replies

5. Shell Programming and Scripting

PERL: Searching for a string in a text file problem

Looking for a bit of help. I need to search for a string of words, but unfortunately these words are located on separate lines. for example the text output is: United Chanmpions Ronaldo Liverpool Losers Torres and my script code is print("DEBUG - checking file message"); while... (15 Replies)
Discussion started by: meevagh
15 Replies

6. UNIX for Dummies Questions & Answers

searching for a string in a file

I need to search for a specific string in a file and if this string exist I need to replace it with something else. I am not sure how I could do this, using an if statement. (2 Replies)
Discussion started by: ROOZ
2 Replies

7. Shell Programming and Scripting

Extracting a string from one file and searching the same string in other files

Hi, Need to extract a string from one file and search the same in other files. Ex: I have file1 of hundred lines with no delimiters not even space. I have 3 more files. I should get 1 to 10 characters say substring from each line of file1 and search that string in rest of the files and get... (1 Reply)
Discussion started by: mohancrr
1 Replies

8. Shell Programming and Scripting

Perl: searching for a string in a file...

Hi All, I need to search for a string in a file that I've opened and base a decision on the result. The logic is this: "if the word 'Shared' appears on the first line then do this on the whole file else do this on the whole file " The code I currently have isn't working:... (4 Replies)
Discussion started by: pondlife
4 Replies

9. Shell Programming and Scripting

Complicated string searching in a file

Hi folks, Following a part of opmn.xml file: <process-type id="OC4J_RiGHTv_PLATOR81" module-id="OC4J"> <environment> <variable id="LD_LIBRARY_PATH" value="/home/ias/v10.1.2/lib" append="true"/> <variable id="SHLIB_PATH"... (5 Replies)
Discussion started by: nir_s
5 Replies

10. UNIX for Dummies Questions & Answers

searching for a string though file system

Is there a way to search an entire file system for the occurance of a string..... other than grep. I have a large directory structure and I'm not certain that grep <string> */*/*/*... is all that effective - especially as I can't be sure of the number of levels to go down without heaps of... (3 Replies)
Discussion started by: peter.herlihy
3 Replies
Login or Register to Ask a Question