in reply to How do i extract records from a file containing a certain keyword in 1 field?

Since you don't describe the data format, this is going to be a general soln. If you have space delimited text you could do the following.
This is the datafile of space delimited. 1 fruit apple,pear 2 fruitloop orange,yellow 3 fruitcake yummy,bad 4 car bug,volvo,toyota,jag #!/usr/bin/perl -w use strict; my $keywordcol = 2; # keywords are in this column my $wordpattotest = '\wag'; my $wordtotest = 'orange'; my $datafilename = 'in.dat'; open(IN,$datafilename); my @data; while(<IN>) { my (@fields) = split(/\s+/,$_); # if you wanted to have data separated by tabs, replace \s with \t +, # remove the '+' if you don't want multiple consecutive # separators to be treated as one. if( $fields[$keywordcol] =~ /$wordpattotest/ ) { print; } # or if you wanted to find exact words you could loop # over the keywords foreach my $w ( split(/,/,$fields[$keywordcol] ) ) { print if( $w eq $wordtotest); } push @data, \@fields; } # If you wanted to sort the data by a specific column my $coltosort = 1; foreach my $row ( sort { $a->[$coltosort] cmp $b->[$coltosort] } @data + ) { # replace cmp with <=> if data is numeric print join(' ', @$row), "\n" }
  • Comment on Re: How do i extract records from a file containing a certain keyword in 1 field?
  • Download Code