我有这样的文本文件:
0 298047498 /directory1/app/20170417/file1.blob 0 f191
e 6569844 /directory1/app/20170417/file2.blob 0 f191
344 /directory1/app/20170417/file3.blob 0
8946 /directory1/app/20170417/file4.blob 0
196496 /directory1/app/20170417/file5.blob 0
9 182340752 /directory1/app/20170417/file6.blob 0 f191
68802 /directory1/app/20170417/file7.blob 0
我想删除第一个/之前的所有内容以及文件扩展名之后的所有内容。
结果应如下所示:
/directory1/app/20170417/file1.blob
/directory1/app/20170417/file2.blob
/directory1/app/20170417/file3.blob
有没有办法使用 vi 搜索和替换来做到这一点?
这种类型的问题可能更适合放在这里:https://vi.stackexchange.com/
但是现在:
例如,您可以使用一个简单的vim宏,在其中收集编辑一行所需的所有击键,并根据需要多次重复此宏。
这里只是一行的击键:
dt/WD
d
= 删除。.t
= ..直到第一个"/">W
= [shift]+[w] 跳转到下一个单词(在"文件位置字符串"之后(D
= [shift]+[d] 删除直到当前行的末尾
如果要将其记录为宏,请执行以下操作,从上方开始,在两者之间击键 - 如下所示:
qmdt/WD[home][down]q
qm
= 在缓冲区"m"中开始录制宏
...从上方
击键[home][down]
= 键 [主页] 后跟 [向下箭头]键,移动到下一行(方便(q
= 结束宏录制
现在使用以下命令执行该宏:
@m
如果您添加了 [down] 键,则可以执行以下操作:
7@m
你用它发射你的宏 7 次,用于你的所有 7 行。