Sponsored Content
Top Forums Shell Programming and Scripting Perl search in a string for.... Post 302288330 by KevinADC on Tuesday 17th of February 2009 02:44:34 AM
Old 02-17-2009
Your comments were not very clear, but see if this helps:

Code:
# This will recursively look for files with extension .702 or .000, starting
# at the path specified ./phil /var/files/i/hate
# if yahoo.tw if found in any of these files, the file will be removed
# try it a few times, then uncomment the rm line to make it really go to work

use strict;
use warnings;
use File::Find;

my $file_extensions = '702|000';
my $search_string = "yahoo.com.tw";
my $dir = $ARGV[0] or do {
   print "Usage: I need to know where you want me to start files. ie: ./phil/var/studpid_files/\n";
   exit(0);
};

find (\&wanted, $dir);

sub wanted {
   if (/\.$file_extensions\z/) {
      open (my $IN , "<", $File::Find::name) or do {
         print "Can't open file $File::Find::name : $!\n";
         return(0);
      };
      my $bad = 0;
      while (my $line = <$IN>) {
         if ($line =~ /([\w.-]+\@yahoo\.com\.tw)/i) {
            print "Found $1 in file $File::Find::name\n";
            $bad = 1;
            last;
         }
      }
      close($IN); 
      if ($bad) {
         sleep(1);#give it a second to close the file
         # uncomment next 4 lines when you are sure it looks like it is working
#           unlink($File::Find::name) or do {
#              print "Can't delete file $File::Find::name : $!\n";
#              return(0);
#           };
      }
   }
}

I use $File::Find::name instead of $_. $File::Find ::name will be the full path to the file with the filename on the end.
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Perl: Search for string then parse next line

Hi All, I have a file that I need to be able to find a pattern match on one line then parse data on the next or subsequent lines - I will know which line needs to be parsed beforehand. This is what I currently have: while (<COMMAND_OUT>) { if ($_ =~ m/TEST/) { ... (4 Replies)
Discussion started by: pondlife
4 Replies

2. Shell Programming and Scripting

Perl: Search for string on line then search and replace text

Hi All, I have a file that I need to be able to find a pattern match on a line, search that line for a text pattern, and replace that text. An example of 4 lines in my file is: 1. MatchText_randomNumberOfText moreData ReplaceMe moreData 2. MatchText_randomNumberOfText moreData moreData... (4 Replies)
Discussion started by: Crypto
4 Replies

3. Shell Programming and Scripting

Perl: Search for string on line then compare numbers!

Hi All, I have a file that I need to be able to find a pattern match on a line, take the number on that line check if its >0.9 or <0.1 and if this is true write the line to output.out file. An example of 4 lines in my file is: 1. driver.I177.I11.net010 1.48622200477273e-05 2.... (2 Replies)
Discussion started by: Crypto
2 Replies

4. Shell Programming and Scripting

search for a string -perl

Hi, I have a line where i need to get certain part of it.. example.. text txt tt: 1909 thats how exactly it looks and all spaces are to be counted.. i need to retrieve 1909.. Thanks (11 Replies)
Discussion started by: meghana
11 Replies

5. Shell Programming and Scripting

How to search a date format from a file an replace with a string in PERL

I am very new to Perl. I am struggling so hard to search a date (such as 10/09/2009, 10-09-2009) from a text file and replace with a string (say DATE) using Perl. Please help me out. Thanks in advance. Regds Doren (4 Replies)
Discussion started by: my_Perl
4 Replies

6. Shell Programming and Scripting

search of string from an array in Perl

Hi All I want to search a string from an array in Perl. If a match occurs, assign that string to a variable else assign 'No match'. I tried writing the script as follows but it's in vain. Please help me.. #!/usr/bin/perl use strict; my $NER; my @text=("ORG","PER"); ... (4 Replies)
Discussion started by: my_Perl
4 Replies

7. Shell Programming and Scripting

perl search string for cut data

perl -lne '$/="1H1XXXXX";print $_ if /0001|0002|0003/' data.txt> output.txt more data.txt 1H1XXXXX|0001|Y| aaa bbb ccc 1H1XXXXX|0005|N| bbb g 1H1XXXXX|0001|Y| hhh ddd 222 1H1XXXXX|0002|Y| 444 1H1XXXXX|0002|N| 222 1H1XXXXX|0003|Y| hhhh (3 Replies)
Discussion started by: kittiwas
3 Replies

8. Shell Programming and Scripting

perl- read search and replace string from the file

Dear all, I have a number of files and each file has two sections separated by a blank line. At the top section, I have lines which describes the values of the alphabetical characters, # s #; 0.123 # p #; 12.3 # d #; -2.33 # f #; 5.68 <blank line> sssssss spfdffff sdfffffff Now I... (4 Replies)
Discussion started by: sasharma
4 Replies

9. UNIX for Dummies Questions & Answers

Search different string using perl

Hello, I want to search two strings in a file and print the same in the new file using perl script. Can anyone suggest me how to do this... The file looks like below: <UML:ModelElement.requirement> <UML:Dependency name="Row_MainColumn_FW_0009"> <UML:ModelElement.taggedValue>... (3 Replies)
Discussion started by: suvendu4urs
3 Replies

10. UNIX for Dummies Questions & Answers

Loop with Perl (string search)

I am using a perl script to reverse and complement sequences if a string is found. The script works as expected as standalone but I would like to use it in my bash file. However, I am not getting my expected result. My test.txt file >Sample_72... (8 Replies)
Discussion started by: Xterra
8 Replies
look(1) 						      General Commands Manual							   look(1)

NAME
look - Finds lines in a sorted list SYNOPSIS
look [-df] [-tcharacter] string [file] The look command prints all lines in a sorted file that begin with string. OPTIONS
Uses dictionary order; only letters, digits, tabs, and spaces are used in comparisons. Searches without regard to case; treats uppercase and lowercase as equivalent. Ignores character and characters following it in the search string. If you specify look -tC ABCDE, the string ABCDE would become (in effect) AB, with CDE being ignored. This option is primarily for shell scripts, in which more than one string is being processed. DESCRIPTION
If no file is specified, look searches in the system word list /usr/share/dict/words, with the options -df assumed by default. The look command uses binary search. The -d and -f options affect comparisons as in sort. NOTES
In order to use the -f option, you must first sort file with the sort -f command; otherwise, look displays only lowercase items. If you do not specify -f, but specify a file (such as /usr/share/dict/words) that has been sorted with sort -f, look may not produce any output. EXAMPLES
To search a sorted file called sortfile for all lines that begin with the string as, enter: look as sortfile To search the system word list for all words beginning with smi, enter: look smi This might result in: smile smirk smith smithereens Smithfield Smithson smithy smitten FILES
System word list. SEE ALSO
Commands: grep(1), sort(1), spell(1) look(1)
All times are GMT -4. The time now is 09:36 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy