【问题标题】:Create millions of line numbers in Notepad++在 Notepad++ 中创建数百万行号
【发布时间】:2018-07-25 09:02:08
【问题描述】:

我有一个巨大的 csv 文件,其中包含数百万行包含 XYZ 坐标。我需要为每个枚举添加一个枚举。 Adding a tab in front 不是问题,找到 the column editor in Notepad++ 也不是问题。

但是,如果我对包含所有 360 万行的文件执行此操作,Notepad++ 会在一小时后自行关闭,而不会发出任何崩溃通知(此处有 112 GB RAM)。如果我将文件拆分为 100 万行的倍数,记事本大约需要一两个小时才能产生一些无法重现的垃圾:

在某些时候添加了行号(但错误的行号,因为很多数字被跳过了),在某些时候格式完全被破坏并且与坐标混淆),但看起来都是随机的。一切都很好,直到大约 1500 线左右。知道如何在不编写脚本的情况下解决这个问题吗?该文件也不是那么大(可能 60 MB)。

【问题讨论】:

  • 为什么要使用记事本++?为此,请使用任何普通的编程语言。你想达到什么目的?
  • 我投票结束这个问题作为superuser.com/questions/10201/…的副本
  • 请注意,superuser.com 上的答案之一指出了nl 实用程序。用法:nl lines.txt.
  • @Wiktor Stribiżew:因为在我们拥有 50k 员工的公司中,我们不允许安装自己的软件,因此我必须使用手头的工具。
  • 如果 perl 已经安装,这里有一个可以完成这项工作的内衬:perl -ape '$_="$.\t$_"' inputfile > outputfile

标签: regex notepad++


【解决方案1】:

如果您受限于可以运行的软件,请尝试使用批处理文件。

@echo off
setlocal enabledelayedexpansion

set I=0

for /f "tokens=*" %%a in (myfile_in.txt) do (
  set /A I=I+1
  echo !I!  %%a>>myfile_out.txt
)

(注意:echo 行上应该有一个选项卡,就在!I! 之后)

请记住,这不会很快。我用一个 3M 行 (~182MB) 的文件做了一个简单的测试,整个过程花了大约 18 分钟。

另外,关于 notepad++ 问题:我也可以在这里重现。我什至不需要使用列编辑器。只需选择 3M 行并按 TAB 即可“破坏”文件。

【讨论】:

    猜你喜欢
    • 2011-08-15
    • 2018-07-07
    • 2021-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-22
    • 1970-01-01
    相关资源
    最近更新 更多