On Tue, Aug 25, 2009 at 3:11 PM, Rik <[email protected]> wrote: > > > On Aug 25, 12:26 pm, Marcelo Sabino <[email protected]> wrote: > > Hi all, > > I'm having "troubles" with ER on vi. Let me explain. I have this data > > > > 03;14;Production;trombetas;Xeon;RHEL;-;PPE;-;F1-A0.3;| > > > > and I want to copy the data of third field to the last field, like this > > > > 03;14;Production;trombetas;Xeon;RHEL;-;PPE;-;F1-A0.3;|trombetas > > Doubtless there will be many suggestions. There are many ways to > accomplish this. If all lines in the file are of the same format, some > solutions will be easier, if only a few lines, other solutions. If the > fields are fixed length, or of the first fields are always of the same > format, or restricted to certain character strings, another set of > solutions may present themselves. > > That said, one regex that will identify the field (fourth field base > 1, field number 3 base 0) you used in your example, combined with a > substitute command that may be used for one line or for a selection of > lines, is: > > s/.\{-};.\{-};.\{-};\(.\{-}\);.*/\0\1/ > > This relies on \{-} ( :help /\{ ), which selects the shortest matching > sequence of the preceding character or character class, and substring > selection, both default (\0 for the whole pattern string) and explicit > \1 (the first substring in parentheses) ( :help :s% ). > > Note that this will fail if semicolons are allowed within fields > (perhaps quoted according to the syntax of the data file), as is > allowed in a CSV file. There may be no simple solution in such a case. > > -- > Rik > > > > Thanx Rik and Gene. I'm read more about \(\) and \{-}.
-- Marcelo Sabino --~--~---------~--~----~------------~-------~--~----~ You received this message from the "vim_use" maillist. For more information, visit http://www.vim.org/maillist.php -~----------~----~----~----~------~----~------~--~---
