--- Booher Timothy B 1stLt AFRL/MNAC <[EMAIL PROTECTED]> wrote:
> o.k. another regex issue . . . I want a one-liner that can remove everything
> after a given character: i.e.
>
> in this case everything after ! (fortran comment):
>
> would this work:
>
> perl -npe 's/\!.+$//'
>
> my thinking is that \! Is the literal character and . would count for
> anything + would represent any number of anything and $ would symbolize the
> end of the line. Am I close, if so how close?
>
> Thanks so much,
>
> tim
I don't know fortran, so I have no idea how likely this is, but what happens if you
have an
exclamation point in quotes? In many languages:
print "some text!"...
You'd wind up with syntax errors. Also, -n and -p are the same thing except -p prints
the lines
and -n does not. If you're sure that you won't have problems with exclamation points
showing up
where you don't want them, try this:
perl -pi.bak -e 's/(?:!.*)?$//' list of files
Here's how the regex breaks out:
s/
(?: # not capturing parens (for grouping)
!.* # and eclamation point followed by zero or more characters
)? # end grouping and make it optional (might not have a comment)
$//x # anchor to end of string and replace with nothing
The -i command line switch allows the in-place edit and the .bak automatically creates
a backup of
the file with a .bak extension.
Cheers,
Curtis "Ovid" Poe
=====
Senior Programmer
Onsite! Technology (http://www.onsitetech.com/)
"Ovid" on http://www.perlmonks.org/
__________________________________________________
Do You Yahoo!?
Check out Yahoo! Shopping and Yahoo! Auctions for all of
your unique holiday gifts! Buy at http://shopping.yahoo.com
or bid at http://auctions.yahoo.com
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]