【发布时间】:2013-01-04 03:58:22
【问题描述】:
我有一个长达数千行的文本文件。每行都以一串 8 个十六进制数字开头。我需要在每一行上删除这个字符串。如何在 vim 中执行此操作?
【问题讨论】:
标签: linux text-editor vi
我有一个长达数千行的文本文件。每行都以一串 8 个十六进制数字开头。我需要在每一行上删除这个字符串。如何在 vim 中执行此操作?
【问题讨论】:
标签: linux text-editor vi
使用 ^V 进行块选择,突出显示您的八列,然后照常删除。
或者使用:s:
:%s/\v^[a-fA-F0-9]{8}//
【讨论】:
用空字符串替换任意行上的前 8 个十六进制字符(0-9 位数字,a-f/A-F 字母):
:%s/^[0-9a-fA-F]\{8\}//gc
【讨论】:
如果该行是
12345678 Something else
在 VIM 中,每行的开头总共要删除 9 个字符
:1,$s/^.........//
应该做的伎俩(9个点),
: 告诉vim你想输入一个命令1,$ 表示该命令影响从第 1 行到最后一行(或 g 全局)s 表示替代^ 表示行首..... 表示 5 个(任意)字符s/^.....// 表示将行首的 5 个字符替换为空编辑以匹配问题中的十六进制字符数..
【讨论】:
使用cut 命令。这种方式更加直截了当。
echo '12345678 Something else' | cut -c 10-
结果:
Something else
提醒一下,cut 索引字符串从 1 开始,而不是 0。
在vi 中,我们可以在vi 中运行cut:
:%!cut -c 10-
【讨论】: