On Wednesday 25 January 2006 04:40 pm, John Wheat wrote: > Good Day, > > I am seeking help to memorize, utilize, and gain basic proficiency > with regular expressions and sed, grep, egrep searches and the like. > When I read something like \^{a-r}\ my brain for lack of a bettwer way > to say it believes this to be a ctl-d and stops all processing. So if > you have a tool or an acronym or perhaps a silly song you have made up > that would help me learn this aspect of CLI interaction would you please > share that information with me. > > John Wheat Here is a script I wrote many years ago, that helped me understand regexp's I called testre copy this to a file (what is between the ======= lines) do a chmod u+x on the file and do a testre -h it will tell you what it needs I did a quick regexp test on it by doing: > testre '^[a-z][abc](.*)' "tcsh" |tcsh| captured value = sh it will put |'s around what was actually matched. and if you do capturing, i.e. a regexp inside of parens, it will show you what was captured. Hope this helps! Jerry ================== testre ==================== #!/usr/bin/env perl # script: testre # author: Jerry Davis # date: 05/10/2001 # # This is a perl script which will show regular expression matches from various # inputs # # The input can be from a file, or have any number of arguments. # testre -h will print help text of what is expected. # # A very simplistic version of this was written by me, many years ago, when I was doing # major regular expression checking with PVCS output. I expanded this program specifically # for the MLUG presentation of REGEXP 101 # # # testre: # number of args = 0, get both string and regex from file. # number of args = 1, expect string as redirected input, and regex = arg1 # number of args = 2, arg1 = regex, arg2 = string my ($filename, $string, $pattern); $argnbr = @ARGV; # get number of args if (($argnbr == 1) && ($ARGV[0] eq '-h')) { print <<' EOH'; usage: testre (-h|[regex] [string]|[regex] < inputfile) number of args = 0, get both string and regex from file. in file there must be a [=== text ===] and [=== regex ===] tag to delimit what is the text to match, and the regular expression respectively for instance: [=== text ===] This is some text to match, but not at the end of the line [=== regex ===] (match)$ note: the regexp is assumed to be on only one line number of args = 1, expect string as redirected input, and regex = arg1 number of args = 2, arg1 = regex, arg2 = string EOH exit 0 } # number of args = 2, arg1 = regex, arg2 = string if ($argnbr == 2) { ($pattern, $string) = @ARGV; # get args into variables chomp ($string, $pattern); # get rid of newlines showRE($string, $pattern); # show the regexp exit; } # number of args = 1, expect string as redirected input, and regex = arg1 if (($argnbr == 1) && ($ARGV[0] ne '-h')) { $pattern = shift; # get the pattern from arg1 print "Input values:\n pattern = $pattern\n\n"; # now read all the lines from the file while ($string = <>) { chomp $string; showRE($string, $pattern); } exit; } # number of args = 0, get both string and regex from file. if ($argnbr == 0) { my (@lines); # lines array will hold all the lines of text while (<>) { chomp; if ($_ eq '[=== regex ===]') { $_ = <>; # get next line as pattern chomp $_; $pattern = $_; print "Input values:\n pattern = $pattern\n\n"; #last; } next if ($_ eq '[=== text ===]'); push @lines, $_; } foreach my $string (@lines) { showRE($string, $pattern); } } sub showRE { my ($s, $re) = @_; # return if $s = ''; # in perl, $` is the before match # $& is the actual match # $' is the after match if ($s =~ /$re/) { print "$`|$&|$'\ncaptured value = $1\n"; } # else { # print "no match\n"; # } } ======================================== -- Hobbit Name: Pimpernel Loamsdown Registered Linux User: 275424 This email's random fortune: Don't put off for tomorrow what you can do today because if you enjoy it today, you can do it again tomorrow. --------------------------------------------------- PLUG-discuss mailing list - PLUG-discuss@lists.plug.phoenix.az.us To subscribe, unsubscribe, or to change you mail settings: http://lists.PLUG.phoenix.az.us/mailman/listinfo/plug-discuss