国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

vim 多行匹配刪除至行首
ringa_lee
ringa_lee 2017-05-16 16:34:34
0
3
766

問(wèn)題描述
需要對(duì)一個(gè)較大的檔案進(jìn)行處理,刪除每一行中符合的字串之前的內(nèi)容。文件內(nèi)容格式如下:


aaa dd kk segmentfault=1098-0987-3jlc ok=okj hello=0cvqa
12jk od=kk segmentfault=1jj8-lk87-oplc suiji=che shachu=keng
pppp=dd bbo;=9as segmentfault=0876-oj87-3pac zifu=ka neirong=xia

期望能夠刪除每行第一次出現(xiàn) segmentfault 之前的內(nèi)容至行首,期望處理的結(jié)果如下


segmentfault=1098-0987-3jlc ok=okj hello=0cvqa
segmentfault=1jj8-lk87-oplc suiji=che shachu=keng
segmentfault=0876-oj87-3pac zifu=ka neirong=xia

目前方案
使用巨集來(lái)執(zhí)行

qa    ---開啟宏錄制
/resourceId ---隨意操作
d0               ---隨意操作,刪除至行首
j                  ---隨意操作,跳轉(zhuǎn)到下一行
q     ---退出宏
1000000@a ---執(zhí)行1000000次

缺點(diǎn):效率低下,極度耗時(shí)

期望方案
期望直接列編輯(ctrl + v)之後進(jìn)行 刪除每行匹配位置至行首 的操作。
該如何實(shí)現(xiàn)?

ringa_lee
ringa_lee

ringa_lee

全部回覆(3)
曾經(jīng)蠟筆沒(méi)有小新

試試正規(guī)替換吧,列編輯,你的關(guān)鍵字位置不一樣,直接列編輯不了

:%s/^.*segmentfault/segmentfault/g
僅有的幸福

@ixx 思路是對(duì)的,正規(guī)表示式
不過(guò)有更簡(jiǎn)單的方案

:%s/^.*\zesegmentfault//g

ze 標(biāo)記匹配模式結(jié)束

淡淡煙草味

我猜問(wèn)題作者是想使用vim的列模式(Ctrl-v)然後多行選擇,匹配選擇到segment單字之前的部分。
但是不行,因?yàn)樽霾坏?br>1)列模式下匹配做得比較好的是到行首或者行尾,形成不規(guī)則的匹配塊;其他的位置不行。
2)第一行從行首到segment的s是3個(gè)W,而2行和3行到segment的s是2個(gè)W,這個(gè)不好一次性弄的。 (同理W換w也不行)

列模式下,比較適合處理的前提是,文字排列比較整齊或是能方便統(tǒng)一定位的。

==========
另一個(gè)答案說(shuō)的用正規(guī)表示式來(lái)匹配替換的很好用。

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板