0

次の SQL があり、電子メール アドレスに整数を追加し、レコードごとにその数値をインクリメントする必要があります。

Insert into D2PROD."FICTITIOUS_VALUES"  values (894735,'John','Doe','U',to_timestamp('07-AUG-58 06.09.58.213000000 AM','DD-MON-RR HH.MI.SS.FF AM'),'23985','563836','563836','5f4dcc3b5aa765d61d8327deb882cf99','729','1S8I','RANCHESTER','3693','280204','190783','john.doe@example.com');
Insert into D2PROD."FICTITIOUS_VALUES"  values (334045,'Jane','Doe','B',to_timestamp('24-    APR-66 11.07.41.367000000 AM','DD-MON-RR HH.MI.SS.FF     AM'),'14647','298783','298783','5f4dcc3b5aa765d61d8327deb882cf99','229','3904','GRAYSVILLE','5214','301107','280778','jane.doe@example.com');

次のコマンドの種類を使用すると...

:let @a=1 | %s/\(\w\+\.\w\+\)@\(\w\+\.\w\{3}\)/\="\1_".(@a+setreg('a',@a+1))."@\2"/g

しかし、結果には奇妙な制御文字があります:

Insert into D2PROD."FICTITIOUS_VALUES"  values (894735,'John','Doe','U',to_timestamp('07-AUG-58 06.09.58.213000000 AM','DD-MON-RR HH.MI.SS.FF AM'),'23985','563836','563836','5f4dcc3b5aa765d61d8327deb882cf99','729','1S8I','RANCHESTER','3693','280204','190783','^A_1@^B');
Insert into D2PROD."FICTITIOUS_VALUES"  values (334045,'Jane','Doe','B',to_timestamp('24-APR-66 11.07.41.367000000 AM','DD-MON-RR HH.MI.SS.FF AM'),'14647','298783','298783','5f4dcc3b5aa765d61d8327deb882cf99','229','3904','GRAYSVILLE','5214','301107','280778','^A_2@^B');

この wiki ページに目を通してみましたが、構文が正しく理解できないようです。 http://vim.wikia.com/wiki/Making_a_list_of_numbers

ありがとう、

マット

4

2 に答える 2

2

置換で式を使用する場合は、構文submatch()の代わりに後方参照を使用する必要があります。\#

これにより、式が次のようになります。

let @a=1 | %s/\(\w\+\.\w\+\)@\(\w\+\.\w\{3}\)/\=submatch(1)."_".(@a+setreg('a',@a+1))."@".submatch(2)/g

結果は次のとおりです。

Insert into D2PROD."FICTITIOUS_VALUES"  values (894735,'John','Doe','U',to_timestamp('07-AUG-58 06.09.58.213000000 AM','DD-MON-RR HH.MI.SS.FF AM'),'23985','563836','563836','5f4dcc3b5aa765d61d8327deb882cf99','729','1S8I','RANCHESTER','3693','280204','190783','john.doe_1@example.com');
Insert into D2PROD."FICTITIOUS_VALUES"  values (334045,'Jane','Doe','B',to_timestamp('24-    APR-66 11.07.41.367000000 AM','DD-MON-RR HH.MI.SS.FF     AM'),'14647','298783','298783','5f4dcc3b5aa765d61d8327deb882cf99','229','3904','GRAYSVILLE','5214','301107','280778','jane.doe_2@example.com');

詳細については、を参照:help submatch()してください。

于 2013-07-30T13:30:38.997 に答える