这是一个创建于 3832 天前的主题,其中的信息可能已经有所发展或是发生改变。
编辑一个文件
形如
BEGIN
keyqwertyuiopsdfghjkldfghjkfs
sdfghjkldfghjkdfghjkl;
dfghjkdfghjklfghjkl
sdfghjkl;asdfghjklasdfghjk
COMMIT
UPDATE `xxx` set xxxxx
BEGIN
keyqwertyuiopsdfghjkldfghjkfs
sdfghjkldfghjkdfghjkl;
dfghjkdfghjklfghjkl
sdfghjkl;asdfghjklasdfghjk
COMMIT
UPDATE `xxx` set xxxxx
BEGIN
keyqwertyuiopsdfghjkldfghjkfs
sdfghjkldfghjkdfghjkl;
dfghjkdfghjklfghjkl
sdfghjkl;asdfghjklasdfghjk
COMMIT
UPDATE `xxx` set xxxxx
我想删掉其中从BEGIN到COMMIT结束的这个区块
只保留下各种sql语句
一开始我想只grep出sql语句到另外的文件,但因为这些语句包含了值后太乱,跨行的,转折的,还有一些错误需要手工修正,只能反过来,把所有从BEGIN到COMMIT的区块都删除。但居然尝试了半天没弄起来,求高手给个例子示范。
6 条回复 • 1970-01-01 08:00:00 +08:00
![lyoe](https://cdn.v2ex.com/avatar/b859/9b93/4352_normal.png?m=1412834932) |
|
1
lyoe 2013-12-21 13:34:25 +08:00
:%s/BEGIN\_.\+COMMIT//g
|
![lyoe](https://cdn.v2ex.com/avatar/b859/9b93/4352_normal.png?m=1412834932) |
|
2
lyoe 2013-12-21 13:40:29 +08:00
%s/BEGIN\_[^\(BEGIN\)]\+COMMIT//g
|
![xcatliu](https://cdn.v2ex.com/avatar/0b05/e2f5/45395_normal.png?m=1687854181) |
|
3
xcatliu 2013-12-21 18:40:57 +08:00
用宏吧 q1/BEGIN<enter><shift-v>/COMMIT<enter>d<esc>q 1000q
|
![xcatliu](https://cdn.v2ex.com/avatar/0b05/e2f5/45395_normal.png?m=1687854181) |
|
4
xcatliu 2013-12-21 18:41:33 +08:00
1000@1
|
![maga](https://cdn.v2ex.com/avatar/85ed/7449/37304_normal.png?m=1404550021) |
|
5
maga 2013-12-23 15:25:40 +08:00
:v/UPDATE/d
|
![gongcheng](https://cdn.v2ex.com/gravatar/60dae1f4e1ded49f7d52969657ec6c69?s=48&d=retro) |
|
6
gongcheng 2013-12-23 18:41:02 +08:00
二楼是正解。
|