我有一个长达数千行的文本文件。每行都以一串 8 个十六进制数字开头。我需要在每一行上删除这个字符串。我如何在 vim 中做到这一点?
问问题
1598 次
4 回答
1
用空字符串替换任何行上的前 8 个十六进制字符(0-9 位,af/AF 字母):
:%s/^[0-9a-fA-F]\{8\}//gc
于 2013-01-21T05:03:47.673 回答
1
用于^V块选择,突出显示您的八列,然后照常删除。
或使用:s
:
:%s/\v^[a-fA-F0-9]{8}//
于 2013-01-21T05:04:07.460 回答
1
如果线路是
12345678 Something else
在 VIM 中,每行的开头总共要删除 9 个字符
:1,$s/^.........//
应该做的伎俩(9个点),
:
告诉 vim 你想输入一个命令1,$
表示命令影响从第 1 行到最后(或g
全局)s
意味着替代^
表示行首.....
表示 5 个(任意)字符s/^.....//
表示将行首的 5 个字符替换为空
编辑以匹配问题中的十六进制字符数..
于 2013-01-21T05:04:22.200 回答
1
使用cut
命令。这种方式更直接。
echo '12345678 Something else' | cut -c 10-
结果:
Something else
提醒一下,cut
索引字符串从 1 而不是 0 开始。
在中vi
,我们可以运行:cut
vi
:%!cut -c 10-
于 2018-04-11T13:06:09.197 回答