in reply to Need Some help with finding a word in a file

You're 99% of the way there already! Use () and $1 in your match to pull out the data you need. Ex:
#!/usr/bin/perl my $data_file = '/home/resources.xml'; my $data_out = '/home/out.log'; open DATA, "$data_file" or die "can't open $data_file $!"; open DATA_OUT, ">>$data_out"; my @array_of_data = <DATA>; my $match; foreach my $line (@array_of_data) { if ($line =~ m/authDataAlias=(.*-.*-.*_DM)/i) { $match = $1; print DATA_OUT "$line\n"; } } close (DATA); close (DATA_OUT);
The special variables $1, $2, etc are set to the data inside of parens when you use parens to encapsulate part of your regex. So $1 matches the first (...), $2 the second, and so forth.

Replies are listed 'Best First'.
Re^2: Need Some help with finding a word in a file
by was6guy (Initiate) on Nov 29, 2007 at 14:42 UTC
    Thank you so much. Does anyone know how to ignore duplicates?
      Can you be a little more specific about which duplicates you wish to ignore? Do you expect to find duplicate words within the same line? Within the file but not within a single line?
        Ok, the above code places the entries in an outlog. Here's an example of one of the logs:
        cell-tstc-65_DM/userQ cell-tstc-65_DM/userQ node-tstc-65_DM/userF
        I need to be able to ignore the blank space, and the duplicate. A blank entry is getting loaded when the authAlias is set to null: ""
      I can deal with the duplicates, not that big of a deal, but I think I need help with my regex, some of the stings have a null value, and some have a value, I need the ones that look like this:

      authDataAlias="cell-tstc-65_DM/userQ"

      I'm only concerned with: cell-tstc-65_DM/userQ

      If I do this, sed returns a blank line in the file since one of the authDataAlias strings is set to ="":
      ($line =~ m/authDataAlias=\"([^\"]*)\"/i) cell-tstc-65_DM/userQ cell-tstc-65_DM/user1
      If I run this sed command, it ignores the empty sting, but returns too much of the line:
      ($line =~ m/authDataAlias=(.*-.*-.*_DM\/.*)/i) "cell-tstc-65_DM/userQ" connectionDefinition="ConnectionDefinition_105 +4132487569" cmpDatasource="DataSource_1195273954323"> "cell-tstc-65_DM/user1" relationalResourceAdapter="builtin_rra" statem +entCacheSize="10" datasourceHelperClassname="com.ibm.websphere.rsadap +ter.DB2UniversalDataStoreHelper">