On Fri, 2004-08-13 at 16:51, Errin Larsen wrote: > um, can anyone explain the 'print' function below to me? > > specifically ... this: > > 'print "@F[0,5]"'
The -a signal splits the input lines and stores the resulting elements
in @F
Example:
perl -nae 'print "$F[1]\n"' file.txt
where file.txt contains
one two three
four five six
prints:
two
five
Also, although this splitting on spaces, you can also use the -F signal
to define what you're splitting in.
See `perldoc perlrun`
HTH,
jac
PS:
Oh, print "@F[0,5]", of course, prints the first six elements of @F, and
since they're between double quotes, they're joined with whatever is in
$" (usually a space)
> How do I use this idea in a script instead of a command line? also,
> how is the input getting into this function? I mean, I understand $_
> and all, but on a command line, are we piping to that command? what's
> with the '@F'?
>
> Thanks for the help!
>
> --Errin
>
>
> On Fri, 13 Aug 2004 09:52:04 -0400, [EMAIL PROTECTED]
> <[EMAIL PROTECTED]> wrote:
> > Thanks too all who passed some knowledge on, but I ended up using :
> >
> > while (<D>) {
> >
> > ## look for 9840S and ebexpire
> > ## declare OFS = tab
> > ## tell split to split on IRS 0,1&5. very similar to awk
> > print $
> >
> > if (($_ =~ /9840S/) && ($_ =~ /ebexpire, ebexpire/ )) {
> > local $, = "\t";
> > print FOO +(split)[0,1,5], $/;
> > #print +(split)[0,1,5], $/;
> >
> > Derek B. Smith
> > OhioHealth IT
> > UNIX / TSM / EDM Teams
> > 614-566-4145
> >
> > "John W. Krahn" <[EMAIL PROTECTED]>
> > 08/13/2004 08:51 AM
> >
> > To: Perl Beginners <[EMAIL PROTECTED]>
> > cc:
> > Subject: Re: awk like question
> >
> > [EMAIL PROTECTED] wrote:
> > > All,
> >
> > Hello,
> >
> > > wasn't sure if this was received b/c I got a reurne to sender error.
> > >
> > >
> > > How can I print certain fields delimited by ' '?
> > > In awk I would write awk '{print $1, $6}' filename
> >
> > The Perl equivalent of that is:
> >
> > perl -lane 'print "@F[0,5]"'
> >
> > > Here is an out file that I want to grab data from :
> > >
> > > 04/29/04 11:00:28 [ 6687:ebexpire, [EMAIL PROTECTED] E00796 9840S 537
> >
> > > 2B0234233543E6A4
> > > 04/29/04 11:00:28 [ 6687:ebexpire, [EMAIL PROTECTED] E00830 9840S 571
> >
> > > D402325A8345ABDE
> > > 04/29/04 11:00:28 [ 6687:ebexpire, [EMAIL PROTECTED] E00066 9840S 127
> >
> > > 5202333193B75CBB
> > > 04/29/04 11:00:28 [ 6687:ebexpire, [EMAIL PROTECTED] E00501 9840S 168
> >
> > > 4B0233BABA5813F6
> > >
> > > I want fields one two and six or the date, time and E string.
> > > Does it matter whether I use a foreach or a while (<filehandle>) ?
> >
> > You could write that in Perl as:
> >
> > perl -lane 'print "@F[0,1,5]"'
> >
> > John
> > --
> > use Perl;
> > program
> > fulfillment
> >
> > --
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> > <http://learn.perl.org/> <http://learn.perl.org/first-response>
> >
> >
--
Jos� Alves de Castro <[EMAIL PROTECTED]>
http://natura.di.uminho.pt/~jac
signature.asc
Description: This is a digitally signed message part
