Funny, I didn't see anyone compute an offset. Could you point it out?
I'm interested.

Anyway, I golfed it a little bit with a whatever-star. Below you can
preserve or rearrange the order of returned lines (#1, and #2). And
you offset using whatever value you'd like (#3):

#1
~$ raku -e '$*IN.lines[ (1,3,7).map(*-1) ].join("\n").put;' < Lines.txt
Line 1
Line 3
Line 7

#2
~$ raku -e '$*IN.lines[ (1,7,3).map(*-1) ].join("\n").put;' < Lines.txt
Line 1
Line 7
Line 3

#3
~$ raku -e '$*IN.lines[ (1,3,7).map(*+3) ].join("\n").put;' < Lines.txt
Line 5
Line 7
Line 11

HTH, Bill.


On Tue, Aug 25, 2020 at 2:13 PM yary <not....@gmail.com> wrote:

> > Now, does anyone have a simpler way than using the ".map" above?
>
> There were a few in the thread!
>
> Here's my golfing, unlike the others, this preserves the order of the
> lines (which may or may not be desired)
>
> raku -ne '.say if $++ == any 6,3,1' line0-10.txt
>
> -y
>
>
> On Tue, Aug 25, 2020 at 12:03 PM William Michels via perl6-users <
> perl6-us...@perl.org> wrote:
>
>> If Todd wants to print lines containing "Line 1", "Line 3", and "Line 7",
>> he's going to have to correct for zero-indexing:
>>
>> user@book:~$ raku -e '$*IN.lines[ 1,3,7 ].join("\n").put;' < Lines.txt
>> Line 2
>> Line 4
>> Line 8
>>
>> #Below: subtracting one from (1,3,7) gives the return he wants:
>>
>> user@book:~$ raku -e '$*IN.lines[ (1,3,7).map: { $_ - 1 }
>> ].join("\n").put;' < Lines.txt
>> Line 1
>> Line 3
>> Line 7
>>
>> Now, does anyone have a simpler way than using the ".map" above?
>>
>> HTH, Bill.
>>
>>
>>
>> On Tue, Aug 25, 2020 at 10:46 AM Andy Bach <andy_b...@wiwb.uscourts.gov>
>> wrote:
>>
>>> Ah, I see, the -n reads a line and then my lines on $*IN starts with the
>>> next one
>>> C:\> type lines.txt | "\Program Files (x86)\rakudo\bin\raku.exe"   -e
>>> "my @x = $*IN.lines(); say @x[0,1,7,3]; "
>>> (Line 0 Line 1 Line 7 Line 3)
>>>
>>> and so $*IN is the default for lines()
>>> C:\> type lines.txt | "\Program Files (x86)\rakudo\bin\raku.exe"   -e
>>> "my @x = lines(); say @x[0,1,7,3]; "
>>> (Line 0 Line 1 Line 7 Line 3)
>>>
>>> This hangs, with and without the -n
>>> C:\> "\Program Files (x86)\rakudo\bin\raku.exe"   -ne "my @x =
>>> $*IN.lines(); say @x[0,1,7,3]; " lines.txt
>>>
>>> Though:
>>> C:\> "\Program Files (x86)\rakudo\bin\raku.exe"   -ne "my @x = lines();
>>> say @x[0,1,7,3]; " lines.txt
>>> (Line 1 Line 2 Line 8 Line 4)
>>> Cannot do 'get' on a handle in binary mode
>>>   in block <unit> at -e line 1
>>>
>>> a
>>>
>>> Andy Bach, BS, MSCMECFA
>>> Systems Mangler
>>> Internet: andy_b...@wiwb.uscourts.gov
>>> Voice: (608) 261-5738, Cell: (608) 658-1890
>>>
>>> "The three great problems of computer science:
>>> compiler complexity and 'off-by-one' errors".
>>> https://martinfowler.com/bliki/TwoHardThings.html
>>>
>>> ------------------------------
>>> *From:* Andy Bach <andy_b...@wiwb.uscourts.gov>
>>> *Sent:* Tuesday, August 25, 2020 12:18 PM
>>> *To:* Parrot Raiser <1parr...@gmail.com>
>>> *Cc:* perl6-users <perl6-us...@perl.org>; ToddAndMargo <
>>> toddandma...@zoho.com>
>>> *Subject:* Re: print particular lines question
>>>
>>> On Win10
>>> C:\>type lines.txt | "\Program Files (x86)\rakudo\bin\raku.exe"   -ne
>>> "say lines()[1,7,3]; "
>>> (Line 2 Line 8 Line 4)
>>> (Line 11 Nil Nil)
>>>
>>> C:\>type lines.txt | "\Program Files (x86)\rakudo\bin\raku.exe"   -ne
>>> "say lines()[1,7,3].join(qq~\n~); "
>>> Line 2
>>> Line 8
>>> Line 4
>>> Use of Nil in string context
>>>   in block  at -e line 1
>>> Use of Nil in string context
>>>   in block  at -e line 1
>>> Line 11
>>>
>>> and, speaking of that off by one problem ... lines.txt does start with
>>> "line 0"
>>> C:\> type lines.txt | "\Program Files (x86)\rakudo\bin\raku.exe"   -ne
>>> "my @x = $*IN.lines(); say @x[0,1,7,3]; "
>>> (Line 1 Line 2 Line 8 Line 4)
>>>
>>> a
>>>
>>> Andy Bach, BS, MSCMECFA
>>> Systems Mangler
>>> Internet: andy_b...@wiwb.uscourts.gov
>>> Voice: (608) 261-5738, Cell: (608) 658-1890
>>>
>>> "The three great problems of computer science:
>>> compiler complexity and 'off-by-one' errors".
>>> https://martinfowler.com/bliki/TwoHardThings.html
>>>
>>> ------------------------------
>>> *From:* Parrot Raiser <1parr...@gmail.com>
>>> *Sent:* Tuesday, August 25, 2020 11:22 AM
>>> *To:* Andy Bach <andy_b...@wiwb.uscourts.gov>
>>> *Cc:* perl6-users <perl6-us...@perl.org>; ToddAndMargo <
>>> toddandma...@zoho.com>
>>> *Subject:* Re: print particular lines question
>>>
>>> That will golf a little (and improve it) to:
>>>
>>> $ raku -e '.say for lines()[3,2,5]' lines.txt
>>>
>>> but you have to remember that it's zero-based. I used the first sample
>>> file and got
>>> Line 4
>>> Line 3
>>> Line 6
>>>
>>> "The three great problems of computer science: compiler complexity and
>>> 'off-by-one' errors".
>>>
>>>
>>> On 8/25/20, Andy Bach <andy_b...@wiwb.uscourts.gov> wrote:
>>> >> Assigning  `my @x=$_.lines` puts everything into $x[0]
>>> >
>>> > Trying this on windows
>>> >
>>> > C:\> raku.exe   -e "my @x = 'lines.txt'.IO.lines; say
>>> > @x[1,7,3].join(qq~\n~); "
>>> > Line 1
>>> > Line 7
>>> > Line 3
>>> >
>>> > or
>>> > C:\> raku.exe -e " say 'lines.txt'.IO.lines[1,7,3].join(qq~\n~); "
>>> > Line 1
>>> > Line 7
>>> > Line 3
>>> >
>>> > a
>>> >
>>> > Andy Bach, BS, MSCMECFA
>>> > Systems Mangler
>>> > Internet: andy_b...@wiwb.uscourts.gov<mailto:
>>> andy_b...@wiwb.uscourts.gov>
>>> > Voice: (608) 261-5738, Cell: (608) 658-1890
>>> >
>>> > Every man has the right to an opinion but no man
>>> > has a right to be wrong in his facts. Nor, above all,
>>> > to persist in errors as to facts. Bernard Baruch
>>> >
>>> > ________________________________
>>> > From: ToddAndMargo via perl6-users <perl6-us...@perl.org>
>>> > Sent: Monday, August 24, 2020 9:35 PM
>>> > To: perl6-users <perl6-us...@perl.org>
>>> > Subject: print particular lines question
>>> >
>>> > Hi All,
>>> >
>>> > I seems I should know how to do this, but
>>> > I am drawing a blank.
>>> >
>>> > $ cat Lines.txt | raku -ne 'say $_;'
>>> > Line 1
>>> > Line 2
>>> > Line 3
>>> > Line 4
>>> > Line 5
>>> > Line 6
>>> > Line 7
>>> > Line 8
>>> > Line 9
>>> > Line 10
>>> > Line 11
>>> >
>>> >
>>> > I want to print liens 1, 3, and 7.
>>> >
>>> > Assigning  `my @x=$_.lines` puts everything into $x[0]
>>> >
>>> >
>>> > Many thanks,
>>> > -T
>>> >
>>>
>>

Reply via email to