Actually, first attempts weren't because of bad regexp but another stupid
bug I had earlier when I was opening the file. I have it working now using:

#!/usr/contrib/bin/perl
open (TEST, "@ARGV[0]");
open (OUT, ">@ARGV[0].out");
while (<TEST>){
  s/\s(\S+)\s+(\d+)\s+(\S+)\s(\S+\/)(\S+\_)(\S+)(00\_)(\d+)/$1\| $2\| $3
\|$4\|$5\|$6\|$7\|$8/;
  print OUT "$_\n";
}
close OUT;
close TEST;

-----Original Message-----
From: Mark Anderson [mailto:[EMAIL PROTECTED]] 
Sent: Thursday, January 09, 2003 1:20 PM
To: Jensen Kenneth B SrA AFPC/DPDMPQ; [EMAIL PROTECTED]
Subject: RE: Reqxp help



-----Original Message-----
From: Jensen Kenneth B SrA AFPC/DPDMPQ
[mailto:[EMAIL PROTECTED]]
Sent: Thursday, January 09, 2003 10:59 AM
To: '[EMAIL PROTECTED]'
Subject: Reqxp help


Trying to make a one liner regxp to covert a file. File has lines like these
(lines are preceded with a space)

 Dec 20 13:28 guard/AFRC_AFRC00_01
 Nov 22 2001 guard/ANCHORAGE_668300_14
 Dec 20 08:46 guard/ALPENA_MI_503000_79
 Dec 30 06:51 guard/ANDREWS_MD_525700_93

Output needs to look like this with pipelines inserted.
 Dec| 20| 13:28 |guard/|AFRC_AFRC|00_|01
 Nov| 22| 2001 |guard/|ANCHORAGE_6683|00_|14
 Dec| 20| 08:46 |guard/|ALPENA_MI_5030|00_|79
 Dec| 30| 06:51 |guard/|ANDREWS_MD_5257|00_|93

The regex's I've tried have been pretty far off. Any help in this greatly
appreciated.

Ken

-----Response Follows-----

I'd like to see what you tried.  I just walked through what I saw you
wanted, literally, almost a character at a time and came up with the
following pretty quickly:

@arr = (' Dec 20 13:28 guard/AFRC_AFRC00_01 ',
        ' Nov 22 2001 guard/ANCHORAGE_668300_14 ',
        ' Dec 20 08:46 guard/ALPENA_MI_503000_79 ',
        ' Dec 30 06:51 guard/ANDREWS_MD_525700_93 ');

foreach $str (@arr) {
    if ($str =~ /( \w{3})( \d{2})(
\d{2}:?\d{2} )(\w+\/)(.*)(\d{2}_)(\d{2} )/) {
        print $1.'|'.$2.'|'.$3.'|'.$4.'|'.$5.'|'.$6.'|'.$7."\n";
    } else {
        print "bad regexp\n";
    }
}

Reply via email to