【问题标题】:How do I remove the first string on every line in vim?如何删除vim中每一行的第一个字符串?
【发布时间】:2013-01-04 03:58:22
【问题描述】:

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

【问题讨论】:

    标签: linux text-editor vi


    【解决方案1】:

    使用 ^V 进行块选择,突出显示您的八列,然后照常删除。

    或者使用:s:

    :%s/\v^[a-fA-F0-9]{8}//
    

    【讨论】:

      【解决方案2】:

      用空字符串替换任意行上的前 8 个十六进制字符(0-9 位数字,a-f/A-F 字母):

       :%s/^[0-9a-fA-F]\{8\}//gc
      

      【讨论】:

        【解决方案3】:

        如果该行是

        12345678 Something else
        

        在 VIM 中,每行的开头总共要删除 9 个字符

        :1,$s/^.........//
        

        应该做的伎俩(9个点),

        • : 告诉vim你想输入一个命令
        • 1,$ 表示该命令影响从第 1 行到最后一行(或 g 全局)
        • s 表示替代
        • ^ 表示行首
        • ..... 表示 5 个(任意)字符
        • s/^.....// 表示将行首的 5 个字符替换为空

        编辑以匹配问题中的十六进制字符数..

        【讨论】:

          【解决方案4】:

          使用cut 命令。这种方式更加直截了当。

          echo '12345678 Something else' | cut -c 10-
          

          结果:

          Something else
          

          提醒一下,cut 索引字符串从 1 开始,而不是 0。

          vi 中,我们可以在vi 中运行cut

          :%!cut -c 10-
          

          【讨论】:

            猜你喜欢
            • 2020-10-05
            • 2015-11-28
            • 1970-01-01
            • 1970-01-01
            • 2011-06-24
            • 1970-01-01
            • 2011-05-16
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多