Loading ...
Sorry, an error occurred while loading the content.

125698Re: Search and write

Expand Messages
  • Lars Iselid
    Sep 1, 2011
    • 0 Attachment
      Ok, I've changed to:
      :g/[-0-9]\{13,17\}/t.|s/^[0-9]\+//g|w! >> my.txt | d

      I still not just get the 13 to 17 digits strings. You say it will copy all the lines that starts with digits. I don't want the whole line just the digit string, not what follows with exception if it's another 13 to 17 digits string.

      Lars Iselid




      On Thu, Sep 1, 2011 at 11:40 AM, Marcin Szamotulski <mszamot@...> wrote:
      On 08:10 Thu 01 Sep     , Lars Iselid wrote:
      > Thanks for help!
      >
      > I want to write the digits and actually my full regex in vim is:
      > /[-0-9]\{13,17\}
      >
      > I want numbers with 13 to 17 digits even if they have hyphens between the
      > digits. Should then be something like:
      >
      > :g/[-0-9]\{13,17\}/t.|s/[^0-9]\+//g|w! >> my.txt | d
      You can try this:
      :g/[-0-9]\{13,17\}/t.|s/^[0-9]\+//g|w! >> my.txt | d
      (it will copy all the lines which starts with more than one digit).
      I think you had a small typo in your pattern. The meaning of ^ inside [] is to
      not match any of the following characters, that's why your pattern matched the
      complement of what you expect.

      Best,
      Marcin
      >
      > I tried this but I get the whole text not just numerical digits (with
      > hyphens) in a new file.
      >
      > Lars
      >
      >
      >
      >
      > On Wed, Aug 31, 2011 at 3:44 PM, Tim Chase <vim@...> wrote:
      >
      > > On 08/31/11 07:23, Lars Iselid wrote:
      > >
      > >> If you have a search statement something like this:
      > >>
      > >> /[0-9]
      > >>
      > >> And want to write :w the matching content to a file. How to do? I've
      > >> seen examples similar to this:
      > >>
      > >> /[0-9] . w>>  my.txt
      > >>
      > >
      > > Depends on whether you want to write just the match, or the entire line.
      > >  If you want the entire line containing the match(es), it's pretty easy:
      > >
      > >  g/[0-9]/w>> my.txt
      > >
      > > If you just want to write those digits to the file, it's more complex.
      > >  Something like:
      > >
      > >  g/[0-9]/t.|s/[^0-9]\+//g|w! >> my.txt | d
      > >
      > > which copies each matching line to the line below, deletes all the
      > > non-digits, writes/appends the temp-line to the file, and then deletes the
      > > temp-line.
      > >
      > > -tim
      > >
      > >
      > >
      >
      > --
      > 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

      --
      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

      --
      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
    • Show all 11 messages in this topic