Print matching lines in a file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Print matching lines in a file
# 1  
Old 11-17-2010
Print matching lines in a file

Hello everyone,

I have a little script below:
Code:
die "Usage infile outfile reGex" if @ARGV != 3;
($regex) = @ARGV;

open(F,$ARGV[0]) or die "Can't open";
open(FOUT,"+>$ARGV[1]") or die "Can't open";

while (<F>)
{
  print FOUT if /$regex/.../$regex/;
}

No matter what I give $regex on the command line, it will only print to FOUT the first 3 line of F. Can anyone tell me what I do wrong here. I want to print out all lines matches whatever I give $regex on the command line.

Appreciate any help,

New bie

Last edited by jim mcnamara; 11-17-2010 at 10:07 PM.. Reason: please learn about code tags
# 2  
Old 11-18-2010
I assumed you passed three arguments in the program.

Argument 1 : input file
Argument 2 : output file
Argument 3 : your regex

Code:
($regex) = @ARGV;

For the above code $regex get the input file name only. So you not able get the desired output. You must assign the third argument as $regex.

I slightly modify your code. Try this
Code:
die "Usage infile outfile reGex" if @ARGV != 3;
($regex) = $ARGV[2];
open(F,$ARGV[0]) or die "Can't open";
open(FOUT,"+>$ARGV[1]") or die "Can't open";
while (<F>)
{
  # $_ is a default variable
  # if your regex match the line you get the line into $ARGV[1] file
  print FOUT "$_" if ($_ =~ /$regex/);
}


Last edited by k_manimuthu; 11-18-2010 at 03:55 AM.. Reason: comment added
# 3  
Old 11-18-2010
Thank you so much K_Manimuthu, your explanation really help me understand the process when assign to @ARGV, really appreciate it.

New bie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Print lines after matching two pattern

would like to print everything after matching two patterns AAA and BBB. output : CCC ZZZ sample data : AAA BBB CCC ZZZ (4 Replies)
Discussion started by: jhonnyrip
4 Replies

2. Shell Programming and Scripting

Want to print out lines with a matching pattern from file

Hi all, I want to search for strings in file1 that can be found in file2 and print out the whole line when matching pattern is found. I have used the below command, but this is not working for me, because it is writing out only the matching patterns from file2, not the whole line. fgrep -o... (2 Replies)
Discussion started by: MonikaB
2 Replies

3. Shell Programming and Scripting

Compare file1 for matching line in file2 and print the difference in matching lines

Hello, I have two files file 1 and file 2 each having result of a query on certain database tables and need to compare for Col1 in file1 with Col3 in file2, compare Col2 with Col4 and output the value of Col1 from File1 which is a) not present in Col3 of File2 b) value of Col2 is different from... (2 Replies)
Discussion started by: RasB15
2 Replies

4. Shell Programming and Scripting

How to print all the lines after pattern matching?

I have a file that contains... Number -------------------- 1 2 3 4 i want to print all the numbers after the hyphen ... (6 Replies)
Discussion started by: ankitknit
6 Replies

5. Shell Programming and Scripting

Look up between 2 files and print matching lines

Hi, I have 2 large log files in .gz format file 1 contains abcde 12345 23456 . . . . . . . . 09123 (8 Replies)
Discussion started by: aravindj80
8 Replies

6. Shell Programming and Scripting

print lines between 2 matching patterns

Hi Guys, I have file like below, I want to print all lines between test1231233 to its 10 occurrence(till line 41) test1231233 qwe qwe qweq123 test1231233 qwe qwe qweq23 test1231233 qwe qwe qweq123 test1231233 qwe qwe qweq123131 (3 Replies)
Discussion started by: jagnikam
3 Replies

7. Shell Programming and Scripting

Print lines matching value(s) in other file using awk

Hi, I have two comma separated files. I would like to see field 1 value of File1 exact match in field 2 of File2. If the value matches, then it should print matched lines from File2. I have achieved the results using cut, paste and egrep -f but I would like to use awk as it is efficient way and... (7 Replies)
Discussion started by: SBC
7 Replies

8. Shell Programming and Scripting

AIX equivalent to GNU grep's -B and -A [print lines after or before matching lines]

Hi folks I am not allowed to install GNU grep on AIX. Here my code excerpt: grep_fatal () { /usr/sfw/bin/gegrep -B4 -A2 "FATAL|QUEUE|SIGHUP" } Howto the same on AIX based machine? from manual GNU grep ‘--after-context=num’ Print num lines of trailing context after... (4 Replies)
Discussion started by: slashdotweenie
4 Replies

9. Shell Programming and Scripting

How to print file without few exactly matching lines?

Hi I have a very long file with 4 columns of numbers for example 1875 1876 12725 12723 13785 13786 4232 4230 13184 13185 ... (2 Replies)
Discussion started by: ananyob
2 Replies

10. Shell Programming and Scripting

I want to print next 3 lines after pattern matching.

Dear Experts, I have file called file1 in which i am greping a pattern after that i want to next 3 lines when that pattern is matched. Ex:- file1 USA UK India Africa Hello Asia Europe Australia Hello Peter Robert Jo i want to next 3 lines after matching Hello... (12 Replies)
Discussion started by: naree
12 Replies
Login or Register to Ask a Question