【问题标题】:Add trailing zeroes to line in notepad++将尾随零添加到记事本++中的行
【发布时间】:2013-02-14 15:43:59
【问题描述】:

我有一个包含(数百个)数字块的文件,如下所示;

这个很好(16x20,行列数正确)

11111111111111111110
16666616666666661110
16111616111111162610
16111646111663132610
16162616261623132610
16162313261623132610
16162313261623132610
16162313261623132610
16162313261623132610
16162313261623132610
16162313261623132610
16162313261626132610
16166313661116632610
16111111111116132610
16666666666666136610
11111111111111111110

这个需要用尾随零填充,所以它是 (16x20)

111111111111111111
166616666666663661
166611111111111661
166666366663661661
113161111111161611
1316166666616161
1616162262616161
11616166112616161
16616166116616161
16616162262616161
16616166266616161
16616111161116161
1661666666666616111
1661666166163366661
1641666166166613661
1111111111111111111

我想用零填充它们,所以它们都像第一个示例一样。我知道 notepad++ 中的正则表达式功能,但正在努力让它工作。感谢您提供的任何帮助。

【问题讨论】:

  • 一个更好的编辑器会很容易做到这一点......notepad++......祝你好运!
  • 你能推荐另一个编辑器和技术来做到这一点吗?我不依赖于记事本++或任何认为我可以在其中完成这个小任务的东西。
  • 我用 vim/gvim 编辑器添加了一个答案。如果您认为答案不适合此处,我将其删除。希望有帮助
  • 另外,如果你的文件很大,就像你说的,1400+块,你可以考虑一些文本处理器,比如awk,sed。对于这些工具来说,这将是小菜一碟。例如awk 'length<20{for(i=length;i<=20;i++)$0=$0"0"}1' file 将在一秒钟内完成这项工作。

标签: regex notepad++


【解决方案1】:

你可以通过宏来实现。

首先使用宏在每一行的末尾附加大量的零。

  1. 第一个条目上的插入符号
  2. 点击录制宏
  3. end
  4. 输入 20 个零
  5. down arrow
  6. 点击停止录制
  7. 播放宏,直到所有行都像这样

    11111111111111111100000000000000000000000000000000000000000000 166616666666663661000000000000000000000000000000000000000000000 16661111111111166100000000000000000000000000000000000000000000 16666636666366166100000000000000000000000000000000000000000000 11316111111116161100000000000000000000000000000000000000000000 131616666661616100000000000000000000000000000000000000000000 161616226261616100000000000000000000000000000000000000000000 11616166112616161000000000000000000000000000000000000000000000 1661616611661616100000000000000000000000000000000000000000000 16616162262616161000000000000000000000000000000000000000000000 1661616626661616100000000000000000000000000000000000000000000 1661611116111616100000000000000000000000000000000000000000000 166166666666661611100000000000000000000000000000000000000000000 1661666166163366661000000000000000000000000000000000000000000000 1641666166166613661000000000000000000000000000000000000000000000 111111111111111111100000000000000000000000000000000000000000000

那么……

  1. 第一行插入符号
  2. 点击记录
  3. home
  4. right arrow 键 20 次
  5. 按住shift并按end
  6. delete
  7. down arrow
  8. 点击停止录制
  9. 播放宏,直到处理完所有行

您可以将整个过程保存为一个宏,这样以后只需单击一下即可。

【讨论】:

    【解决方案2】:

    您可以使用插件 ConyEdit 来执行此操作。 在后台运行 ConyEdit,请按照以下步骤操作:

    1. 使用命令行cc.aal 00000000000000000000 在行后追加二十个零字符。
    2. 使用命令行cc.gc 1/\d{20}/ 获取正则表达式匹配的第一列。

    【讨论】:

      【解决方案3】:

      我可以给你一个宏观的解决方案

      转到文本的开头

      选择Macro/Start Recording

      end,按0 16次,然后按Home向下箭头键

      选择Macro/End Recording

      您现在有一个宏可以在所有行的末尾添加 16 个零。 在所有行上播放此宏。

      您现在已将零附加到所有行。

      Alt 键并使用鼠标选择所需的文本块(列)并将其粘贴到另一个空白记事本选项卡中

      在记事本? / help contents菜单中有关于列模式编辑的帮助

      祝你好运

      【讨论】:

        【解决方案4】:

        希望手动而不是程序化地执行此操作?

        打开查找替换

        从最后一个复制到第一个,没有数字,所以...

        在这个例子中

        111111111111111111 166616666666663661 166611111111111661

        将其粘贴到罚款中(是的,您有效地复制了某些应用程序允许您手动输入其他应用程序不会的回报)

        然后在替换框中输入“0”然后返回 击中魔法替换所有:D

        这将在每次遇到新行时添加一个 0,然后添加一个新...新行....

        编辑:快速检查另一种方法以恢复备用选项:P 给我 10

        编辑 2:

        啊,好的,这样的东西可以工作:P刚刚测试过。
        在查找替换中使用 [0-9]。因此,如果我在寻找 123123123123(最长 12 个)并且我需要将我抛光到 20 个,
        您的 FIND 必须在 () 所以..

        发现是

         ([0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]  )
        

        并且替换被称为 \1 没有正则表达式,这是我的错误

        \100000000

        经过测试和确认!不要忘记您需要匹配所有on,WRAP off

        对于你的其他数字等等,不确定你是否可以用宏和东西循环这个:P 但希望它比你现在有更多帮助

        两个很好的资源。

        http://blog.creativeitp.com/posts-and-articles/editors/understanding-regex-with-notepad/comment-page-1/

        http://regexpal.com/

        【讨论】:

        • 请改进这个答案的拼写。
        • 手动执行此操作是不可行的,我有大约 1400 个这样的块要处理,所以如果可能的话,宁愿使用正则表达式或宏,无论如何感谢您的回答。
        • 第二次更新。但是用您的数据进行了测试和确认。它仍然是一项小工作,但速度快了很多
        【解决方案5】:

        根据 OP 的评论:您可以尝试使用名为 vim/gvim 的编辑器

        在 vim 中打开你的文件,然后输入:

        :%s/.*/\=printf("%-20s",getline("."))/|%s/ *$/\=substitute(submatch(0)," ","0","g")/  
        

        在上述输入后不要忘记按<Enter>

        然后你会看到文字已经变成你想要的了。

        当然 vim 宏也可以工作,但是,我觉得命令更好... :)

        【讨论】:

          猜你喜欢
          • 2018-03-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-05-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多