Friday, December 28, 2012

Re: regex needed

On Fri, Dec 28, 2012 at 11:28 PM, MacVlad <vlad.ghitulescu@gmx.de> wrote:
> Hello!
>
>
> I have a text-file that looks like this:
>
> ---
> R UNZK904326 57075
> P UNZK904385 57127
> P UNZK904328 57053
> P ULZK908062 57101
> P UNZK904322 56498
> R UNZK904386 57108
> P UNZK904288 56383
> P UNZK904397 56383
> P UNZK904444 56878
> R UNZK904465 57253
> R UNEK919821 57025
> R UNEK919745 57259
> R UNZK904527 55769
> R UNEK919814 55944
> R ULZK908272 57376
> R UNZK904471 56355
> R ULZK908371 55393
> R UNZK904574 56646
> R UNEK919701 56974
> R UNZK904565 57598
> R UNZK904603 57649
> R ULZK908326 57471
> R UNZK904588 57610
> R ULZK908324 57514
> R ULZK908307 57614
> P ULZK908369 57149
> R UNZK904603 57649
> R UNEK919933 57643
> P ULEK935569 56373
> P ULEK935571 57504
> P ULZK908295 56122
> P ULZK908484 57149
> P UNEK919781 56816
> P UNEK919785 56747
> P UNEK919959 56615
> P ULEK935884 56951
> P ULEK935886 56845
> P UNZK904559 57572
> R ULEK935659 57784
> R ULEK935727 56203
> R ULEK935729 56474
> R ULEK935860 57871
> R ULEK935938 57946
> R ULEK935866 57885
> R ULZK908389 57584
> R ULZK908389 57743
> R ULZK908397 57707
> R ULZK908401 57743
> R ULZK908477 57647
> R ULZK908505 57853
> R ULZK908508 57672
> R UNZK904601 57598
> R UNZK904597 56581
> R ULZK908545 57897
> R ULZK908270 57469
> R UNZK904619 57688
> V ULZK908382 57724
> V ULZK908431 57724
> R UNZK904746 56581
> R ULZK908686 57754
> R ULEK935997 56474
> R ULZK908690 57975
> R ULEK936068 57999
> R ULZK908692 57208
> R ULEK935991 57956
> R ULZK908696 57955
> R ULEK936078 57983
> R UNZK904463 55662
> R ULEK936070 56010
> P ULEK936122 56478
> R ULZK908377 57623
> P ULEK936126 57671
> P ULEK936136 56784
> P ULEK936148 57102
> R UNEK920127 57622
> R UNZK904680 57294
> P ULEK936158 56303
> R ULEK935862 57800
> R ULZK908515 57636
> R ULEK935862 58097
> R ULEK936166 57800
> R ULZK908377 57623
> ---
>
> I want to make the following changes:
>
> 1.- Every time when a "R UN" in column 1 occurs, replace then the 5 digits ##### on column 14 (like 57075 in the first row) with "SM##### SLA KSR-Netz SST" (that would change the first row from "R UNZK904326 57075" to "R UNZK904326 SM57075 SLA KSR-Netz SST");
>
> 2.- For every row with "R UL" in column 1, replace then the 5 digits ##### on column 14 (like 57376 in the row 15) with "SM##### SLA KSR-Lief SST" (that would change the row 15 from "R ULZK908272 57376" to "R ULZK908272 SM57376 SLA KSR-Lief SST");
>
> 3.- Leave the others rows unchanged.
>
> Could you please help me with a regex in order to do this in VIM? Thank you!

Do this on the first one:

:%s/\(R UN\)\([A-Z]\{2}\d\{6}[ ]\)\(\d\{5}\)/\1\2SM\3 SLA KSR-Netz SST/g

Alter the pattern to do the same thing on the second one.

Check out Mastering Regular Expressions Third Edition by Jeffrey E. F. Friedl

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

No comments:

Post a Comment