1

我有一个长达数千行的文本文件。每行都以一串 8 个十六进制数字开头。我需要在每一行上删除这个字符串。我如何在 vim 中做到这一点?

4

4 回答 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,我们可以运行:cutvi

:%!cut -c 10-
于 2018-04-11T13:06:09.197 回答