我有一个文件:
mr l 0x19600000 0x00004341
mr l 0x19600004 0x00004820
mr l 0x19600008 0x00003130
mr l 0x1960000c 0x00003920
我想删除每一行的最后一部分。所以在我上面的例子中我想删除
0x00004341
0x00004820
...
等等。
该文件包含大约4000行,所以我想正则表达式应该是这样做的。到目前为止,我已经在vim中尝试了这一点而没有运气。
所以问题是如何做到这一点?
答案 0 :(得分:6)
您可以将光标移动到第一个0x00004341
之前的空格,按 Ctrl V 进入可视模式, G 要去缓冲区的末尾, E 要转到行的末尾,然后 d 要删除。
或者,您可以运行:
%s/^\(.* \)[^ ]\+$/\1/g
答案 1 :(得分:4)
这是一个简单的方法:
:%s/ [^ ]\+$//g
以下是一些解释:
% for the whole document
s substitute
/ begin substitution pattern
a space
[^ ] anything but a space
\+ one or more of the previous pattern (must escape + with \)
$ end of line
/ end substitution pattern/begin replacement pattern
/ end replacement pattern (i.e. replace with empty string)
g perform multiple times per line (does nothing here)
答案 2 :(得分:2)
如果你想删除最后一部分:
:%s/[^ ]*$
如果你想删除最后一个部分及其前导空格:
:%s/ *[^ ]*$
答案 3 :(得分:1)
假设所有的行看起来都一样,你可以用宏来做:
qq
0
3f <-- space
D
q
然后:
:%norm @q