On Mar 22, 2011, at 3:33 PM, Dennis Benzinger wrote:

> Hi!
> 
> I have a log file with timestamps and messages:
> 
> 01:00 x
> 02:00 y
> 03:00 z
> 
> To compare the time elapsed between two events I want to prefix each line 
> with the timestamp of the previous time. I tried to use
> 
> %s/^/\=matchstr(getline(line(".")-1), "\\d\\{2}:\\d\\{2} ")
> 
> but somehow the first match is prepended to every line:
> 
> 01:00 x
> 01:00 02:00 y
> 01:00 03:00 z
> 
> A larger example would be the file
> 
> http://www.rfc-editor.org/in-notes/rfc-index.txt
> 
> with the command
> 
> %s/^/\=matchstr(getline(line(".")-1), "\\d\\{4} ")
> 
> The first match 1129 from line 24 is prepended to every following line.
> 
> 
> Where is the problem?

When you substitute line 3, it gets the first time stamp if finds in line 2, so 
I modified line 1 and search pattern like this:

00:00 01:00 x
02:00 y
03:00 z

:%s/^/\=matchstr(getline(line(".")-1), '\d\{2}:\d\{2} \zs\d\{2}:\d\{2} ')

And it seems to work.

Israel

-- 
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

Reply via email to