[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

simple one-liners: last line missing

Tobias Reif

3/13/2006 4:47:00 PM

Hi

Let's say I'd want to modify each line of a file. Here's the dummy
data:

$ cat data.txt
first foo
second foo
third foo
$

This works:

$ ruby -ne '$_ =~ /(\S+)\s+(\S+)/;puts "#{$2} #{$1}"' data.txt
foo first
foo second
foo third
$

I don't really need to achieve that modification. Instead I'd like to
understand why the following version one doesn't work:

$ ruby -pe 'sub(/(\S+)\s+(\S+)/,"#{$2} #{$1}")' data.txt

foo first
foo second
$

TIA,
Tobi



12 Answers

ts

3/13/2006 5:11:00 PM

0

>>>>> "T" == Tobi Reif <tobiasreif@pinkjuice.com> writes:

T> $ ruby -pe 'sub(/(\S+)\s+(\S+)/,"#{$2} #{$1}")' data.txt

The replacement string is build when #sub is called

for the first call $1 = $2 = nil ==> the replacement string is ' '

for the second call, $1 = 'first', $2 = 'foo' ==> the replacement string
is 'foo first'

etc,


Guy Decoux


Andrew Johnson

3/13/2006 5:17:00 PM

0

On Tue, 14 Mar 2006 01:46:50 +0900, Tobi Reif <tobiasreif@pinkjuice.com>
wrote:
[snip]
> I don't really need to achieve that modification. Instead I'd like to
> understand why the following version one doesn't work:
>
> $ ruby -pe 'sub(/(\S+)\s+(\S+)/,"#{$2} #{$1}")' data.txt
>
> foo first
> foo second
> $


When doing substitutions with a string replacement, you do not get what
you might expect because the interpolation of #{$1} in the replacement
string happens when the arguments are evaluated and passed into the sub()
or gsub() methods, not during the match. That means they will have whatever
value they had from the last successful match (or nil, as in your case with
the first line printed).

To access backreferences within a replacement string, you may use the same
notation as you do for backreferences within the pattern itself: \1, \2,
etc. For your example:

ruby -pe 'sub(/(\S+)\s+(\S+)/,%q(\2 \1))' data.txt

Alternatively, you may use the block form of replacement, in which case the
block is evaluated at match-time and $1, $2, etc are available and refer to
their respective backreferences within the current match:

ruby -pe 'sub(/(\S+)\s+(\S+)/){"#{$2} #{$1}"}' data.txt

cheer's
andrew

--
Andrew L. Johnson http://www.s...
Reality is that which, when you stop believing in
it, doesn't go away.
-- Philip K. Dick

vanekl

3/13/2006 5:21:00 PM

0

Tobias Reif

3/13/2006 5:28:00 PM

0

On Tue 2006-03-14 ts wrote:
> >>>>> "T" == Tobi Reif <tobiasreif@pinkjuice.com> writes:
>
> T> $ ruby -pe 'sub(/(\S+)\s+(\S+)/,"#{$2} #{$1}")' data.txt
>
> The replacement string is build when #sub is called
>
> for the first call $1 = $2 = nil ==> the replacement string is ' '
>
> for the second call, $1 = 'first', $2 = 'foo' ==> the replacement string
> is 'foo first'
>
> etc,

Thanks. I guess my (current) opinion is that it should work.

Tobi



Tobias Reif

3/13/2006 5:39:00 PM

0

On Tue 2006-03-14 Tobi Reif wrote:
> On Tue 2006-03-14 ts wrote:
> > >>>>> "T" == Tobi Reif <tobiasreif@pinkjuice.com> writes:
> >
> > T> $ ruby -pe 'sub(/(\S+)\s+(\S+)/,"#{$2} #{$1}")' data.txt
> >
> > The replacement string is build when #sub is called
> >
> > for the first call $1 = $2 = nil ==> the replacement string is ' '
> >
> > for the second call, $1 = 'first', $2 = 'foo' ==> the replacement string
> > is 'foo first'
> >
> > etc,
>
> Thanks. I guess my (current) opinion is that it should work.
>
> Tobi

Now I understand that it can't work.

Thanks again,
Tobi



darion

8/31/2010 8:22:00 AM

0

On Aug 31, 9:47 am, bámbÖö <batoeka...@cavecove.com> wrote:
> On 8/31/2010 2:25 PM, darion wrote:
>
>
>
>
>
> > On Aug 31, 9:19 am, bámbÖö<batoeka...@cavecove.com>  wrote:
> >> Menteri Agama Suryadharma Ali seusai rapat dengar pendapat antara
> >> pemerintah dan DPR di Gedung DPR, Senin (30/8/2010), menyatakan
> >> pemerintah akan segera membubarkan Ahmadiyah. Menteri berpegang pada
> >> dalil, ajaran Ahmadiyah menyimpang dari ajaran Islam terutama menyangkut
> >> keyakinan soal Nabi Muhammad dan Al Quran. Kementerian terkait akan
> >> membicarakan soal pembubaran ini selepas Lebaran.
>
> > jadi jelas Ahmadiyah iku bokan igama.
> > lamtaran igama nggak bisah di bubarken.
> > tremasup igama oblog-obloq jugah.
> > iku kudu dibiyarken, lamtaran dibutuhken orang dongok.
>
> > orang nggak dongok nggak mau masup igama oblog-obloq.
>
> > ya 'kan ?
>
> > oblog-obloq ertiné penganut-é soka mangamukaken hal-hal bo-ong.
>
> apakah énté taoe kalaoe suryadarma ali iQu dari kementrian igama èslam ?

cuman orang dongok nyang bilang adah "kementrian igama èslam"
iku samowa kitanyah tau.

> mémang ané taoe kalaoe banyak èslam yang Öon,dongoQ bin tÖol.-

banyak èslam nyang dongok?

apa situnyah nggak tau bahuwa èslam iku igama.
dan iku nggak banyak.
knapah situnyah nggak tau iku ?

kalu muslim, iku menungsah.
menungsah adah nyang dongok, adah nyang nggak.

samowa menungsah nyang ngikut igama oblog-obloq adalah menungsah
dongok.
menungsah nggak dongok nggak mao masup igama oblog-obloq.
dianyah aken masupin igama kabenaran obyèktip.

iku nggak bisah situnya tawar-tawar lagih.
situnyah kudu trima baè apah nyang sayanyah bilang iku.

sorry ajah !


Jokho Nyingkir

8/31/2010 8:26:00 AM

0

darion <hydario@hotmail.com> wrote in news:47bf21b1-3a80-4c74-a4b1-
52528774c3ad@z28g2000yqh.googlegroups.com:

> On Aug 31, 9:19?am, b?mb?? <batoeka...@cavecove.com> wrote:
>> Menteri Agama Suryadharma Ali seusai rapat dengar pendapat antara
>> pemerintah dan DPR di Gedung DPR, Senin (30/8/2010), menyatakan
>> pemerintah akan segera membubarkan Ahmadiyah. Menteri berpegang pada
>> dalil, ajaran Ahmadiyah menyimpang dari ajaran Islam terutama
menyangkut
>> keyakinan soal Nabi Muhammad dan Al Quran. Kementerian terkait akan
>> membicarakan soal pembubaran ini selepas Lebaran.
>
> jadi jelas Ahmadiyah iku bokan igama.
> lamtaran igama nggak bisah di bubarken.
> tremasup igama oblog-obloq jugah.
> iku kudu dibiyarken, lamtaran dibutuhken orang dongok.
>
> orang nggak dongok nggak mau masup igama oblog-obloq.
>
> ya 'kan ?
>
> oblog-obloq ertin? penganut-? soka mangamukaken hal-hal bo-ong.
>
>

lemme tell ya what OBLOG2 means in the nutshell, here ya go ....

***********************************************************

Beberapa sahabat Nabi memiliki
mushafnya sendiri-sendiri yang
berbeda satu sama lain,
baik dalam hal bacaan, susunan
ayat dan surah, maupun jumlah
ayat dan surah.

============================

masyaaalooh ! ini padahil kejadiannya misik di tahun2 kanjeng nabie
misih hidup atau baru meninggal, .... kok sudah beda satu sama laen,
apalagi katanya sahabat belio nyah !!!


kebayang gak betapa beza nya isi henbuk nyang di citak taon 1924
di Mesir dng nyang dipunyai seng-maseng sahabat junjungan ????

OBLOG2 SUPER DUPER !


Jokho Nyingkir

8/31/2010 8:26:00 AM

0

darion <hydario@hotmail.com> wrote in
news:5219fb62-352e-4716-9797-103892c655cf@q2g2000yqq.googlegroups.com:

> On Aug 31, 9:47 am, bámbÖö <batoeka...@cavecove.com> wrote:
>> On 8/31/2010 2:25 PM, darion wrote:
>>
>>
>>
>>
>>
>> > On Aug 31, 9:19 am, bámbÖö<batoeka...@cavecove.com>  wrote:
>> >> Menteri Agama Suryadharma Ali seusai rapat dengar pendapat antara
>> >> pemerintah dan DPR di Gedung DPR, Senin (30/8/2010), menyatakan
>> >> pemerintah akan segera membubarkan Ahmadiyah. Menteri berpegang
>> >> pada dalil, ajaran Ahmadiyah menyimpang dari ajaran Islam terutama
>> >> menyangk
> ut
>> >> keyakinan soal Nabi Muhammad dan Al Quran. Kementerian terkait
>> >> akan membicarakan soal pembubaran ini selepas Lebaran.
>>
>> > jadi jelas Ahmadiyah iku bokan igama.
>> > lamtaran igama nggak bisah di bubarken.
>> > tremasup igama oblog-obloq jugah.
>> > iku kudu dibiyarken, lamtaran dibutuhken orang dongok.
>>
>> > orang nggak dongok nggak mau masup igama oblog-obloq.
>>
>> > ya 'kan ?
>>
>> > oblog-obloq ertiné penganut-é soka mangamukaken hal-hal bo-ong.
>>
>> apakah énté taoe kalaoe suryadarma ali iQu dari kementrian igama ès
> lam ?
>
> cuman orang dongok nyang bilang adah "kementrian igama èslam"
> iku samowa kitanyah tau.
>
>> mémang ané taoe kalaoe banyak èslam yang Öon,dongoQ bin tÖol.-
>
> banyak èslam nyang dongok?
>
> apa situnyah nggak tau bahuwa èslam iku igama.
> dan iku nggak banyak.
> knapah situnyah nggak tau iku ?
>
> kalu muslim, iku menungsah.
> menungsah adah nyang dongok, adah nyang nggak.
>
> samowa menungsah nyang ngikut igama oblog-obloq adalah menungsah
> dongok.
> menungsah nggak dongok nggak mao masup igama oblog-obloq.
> dianyah aken masupin igama kabenaran obyèktip.
>
> iku nggak bisah situnya tawar-tawar lagih.
> situnyah kudu trima baè apah nyang sayanyah bilang iku.
>
> sorry ajah !
>
>
>

lemme tell ya what OBLOG2 means in the nutshell, here ya go ....

***********************************************************

Beberapa sahabat Nabi memiliki
mushafnya sendiri-sendiri yang
berbeda satu sama lain,
baik dalam hal bacaan, susunan
ayat dan surah, maupun jumlah
ayat dan surah.

============================

masyaaalooh ! ini padahil kejadiannya misik di tahun2 kanjeng nabie
misih hidup atau baru meninggal, .... kok sudah beda satu sama laen,
apalagi katanya sahabat belio nyah !!!


kebayang gak betapa beza nya isi henbuk nyang di citak taon 1924
di Mesir dng nyang dipunyai seng-maseng sahabat junjungan ????

OBLOG2 SUPER DUPER !




bámbÒe

8/31/2010 8:33:00 AM

0

On 8/31/2010 3:22 PM, darion wrote:
> On Aug 31, 9:47 am, b?mb??<batoeka...@cavecove.com> wrote:
>> On 8/31/2010 2:25 PM, darion wrote:
>>
>>
>>
>>
>>
>>> On Aug 31, 9:19 am, b?mb??<batoeka...@cavecove.com> wrote:
>>>> Menteri Agama Suryadharma Ali seusai rapat dengar pendapat antara
>>>> pemerintah dan DPR di Gedung DPR, Senin (30/8/2010), menyatakan
>>>> pemerintah akan segera membubarkan Ahmadiyah. Menteri berpegang pada
>>>> dalil, ajaran Ahmadiyah menyimpang dari ajaran Islam terutama menyangkut
>>>> keyakinan soal Nabi Muhammad dan Al Quran. Kementerian terkait akan
>>>> membicarakan soal pembubaran ini selepas Lebaran.
>>
>>> jadi jelas Ahmadiyah iku bokan igama.
>>> lamtaran igama nggak bisah di bubarken.
>>> tremasup igama oblog-obloq jugah.
>>> iku kudu dibiyarken, lamtaran dibutuhken orang dongok.
>>
>>> orang nggak dongok nggak mau masup igama oblog-obloq.
>>
>>> ya 'kan ?
>>
>>> oblog-obloq ertin? penganut-? soka mangamukaken hal-hal bo-ong.
>>
>> apakah ?nt? taoe kalaoe suryadarma ali iQu dari kementrian igama ?slam ?
>
> cuman orang dongok nyang bilang adah "kementrian igama ?slam"
> iku samowa kitanyah tau.
>
>> m?mang an? taoe kalaoe banyak ?slam yang ?on,dongoQ bin t?ol.-
>
> banyak ?slam nyang dongok?
>

apakah ?nt? mao mbiLLang kalaoe orang ?slam yang memimpin kementrian
igama ?slam iQu dongoQ karena mao membubarken ahmadiyah ?

> apa situnyah nggak tau bahuwa ?slam iku igama.
> dan iku nggak banyak.
> knapah situnyah nggak tau iku ?
>
> kalu muslim, iku menungsah.
> menungsah adah nyang dongok, adah nyang nggak.
>
> samowa menungsah nyang ngikut igama oblog-obloq adalah menungsah
> dongok.
> menungsah nggak dongok nggak mao masup igama oblog-obloq.
> dianyah aken masupin igama kabenaran oby?ktip.
>
> iku nggak bisah situnya tawar-tawar lagih.
> situnyah kudu trima ba? apah nyang sayanyah bilang iku.
>
> sorry ajah !
>
>

darion

8/31/2010 9:52:00 AM

0

On Aug 31, 10:33 am, bámbÖö <batoeka...@cavecove.com> wrote:
> On 8/31/2010 3:22 PM, darion wrote:
>
>
>
>
>
> > On Aug 31, 9:47 am, bámbÖö<batoeka...@cavecove.com>  wrote:
> >> On 8/31/2010 2:25 PM, darion wrote:
>
> >>> On Aug 31, 9:19 am, bámbÖö<batoeka...@cavecove.com>    wrote:
> >>>> Menteri Agama Suryadharma Ali seusai rapat dengar pendapat antara
> >>>> pemerintah dan DPR di Gedung DPR, Senin (30/8/2010), menyatakan
> >>>> pemerintah akan segera membubarkan Ahmadiyah. Menteri berpegang pada
> >>>> dalil, ajaran Ahmadiyah menyimpang dari ajaran Islam terutama menyangkut
> >>>> keyakinan soal Nabi Muhammad dan Al Quran. Kementerian terkait akan
> >>>> membicarakan soal pembubaran ini selepas Lebaran.
>
> >>> jadi jelas Ahmadiyah iku bokan igama.
> >>> lamtaran igama nggak bisah di bubarken.
> >>> tremasup igama oblog-obloq jugah.
> >>> iku kudu dibiyarken, lamtaran dibutuhken orang dongok.
>
> >>> orang nggak dongok nggak mau masup igama oblog-obloq.
>
> >>> ya 'kan ?
>
> >>> oblog-obloq ertiné penganut-é soka mangamukaken hal-hal bo-ong.
>
> >> apakah énté taoe kalaoe suryadarma ali iQu dari kementrian igama èslam ?
>
> > cuman orang dongok nyang bilang adah "kementrian igama èslam"
> > iku samowa kitanyah tau.
>
> >> mémang ané taoe kalaoe banyak èslam yang Öon,dongoQ bin tÖol..-
>
> > banyak èslam nyang dongok?
>
> apakah énté mao mbiLLang kalaoe orang èslam yang memimpin kementrian
> igama èslam iQu dongoQ karena mao membubarken ahmadiyah ?

ahmadiyah nyang manah mekesut-é situnyah?
igama apah bokan igama ?
igama nggak bisah dibobarken.
nggak bisah.

aliran pulitik, gerakan atawa organisasi bisah dibubarken.

apa adah igama ahmadiyah ?
adah ?

>
> > apa situnyah nggak tau bahuwa èslam iku igama.
> > dan iku nggak banyak.
> > knapah situnyah nggak tau iku ?
>
> > kalu muslim, iku menungsah.
> > menungsah adah nyang dongok, adah nyang nggak.
>
> > samowa menungsah nyang ngikut igama oblog-obloq adalah menungsah
> > dongok.
> > menungsah nggak dongok nggak mao masup igama oblog-obloq.
> > dianyah aken masupin igama kabenaran obyèktip.
>
> > iku nggak bisah situnya tawar-tawar lagih.
> > situnyah kudu trima baè apah nyang sayanyah bilang iku.
>
> > sorry ajah !-