![]() |
1
40
对于PowerShell来说,这是一项比较简单的任务,因为标准的get-content cmdlet处理非常大的文件不太好。我建议您使用.NET
StreamReader class
要在PowerShell脚本中逐行读取文件,请使用
|
![]() |
2
46
关于一些现有答案的一句警告-对于非常大的文件,它们运行得非常慢。对于一个1.6_GB的日志文件,我在几个小时后放弃了,意识到在第二天回到工作岗位之前,它不会完成。 两个问题:呼叫 Add-Content 打开、查找并关闭源文件中每行的当前目标文件。每次读取一点源文件并查找新行也会减慢速度,但我猜添加内容是主要的罪魁祸首。 以下变体产生的输出稍微不那么令人愉快:它将在行中间拆分文件,但它在不到一分钟的时间内拆分我的1.6 GB日志:
|
![]() |
3
29
基于行数拆分的简单一行(在本例中为100行):
|
![]() |
4
27
与这里的所有答案相同,但是使用streamreader/streamwriter在新的行上进行拆分(一行一行,而不是试图将整个文件一次读取到内存中)。这种方法可以以我所知道的最快的方式分割大文件。 注意:我很少做错误检查,所以我不能保证它能顺利地适用于您的案件。是为我做的( 1.7 GB TXT文件 400万行,每个文件分为100000行 95秒 )
输出拆分1.7 GB文件:
|
![]() |
5
15
我经常需要做同样的事情。诀窍是将标题重复到每个拆分块中。我编写了下面的Cmdlet(PowerShellv2 CTP 3),它完成了这个技巧。
|
![]() |
6
14
我在试图将多个联系人拆分为单个VCARD VCF文件以分离文件时发现了这个问题。这是我根据李的密码做的。我必须查找如何创建一个新的streamreader对象,并将null更改为$null。
|
![]() |
7
6
这些答案对我的源文件来说太慢了。我的源文件是10 MB到800 MB之间的SQL文件,需要将它们拆分为大致相等的行数文件。 我发现以前的一些答案使用添加内容的速度非常慢。等待数小时以完成分割并不罕见。 我没有尝试 Typhlosaurus's answer 但它只按文件大小进行拆分,而不按行数进行拆分。 以下内容适合我的目的。
对于一个54 MB的文件,我得到输出…
我希望其他人寻找一个简单的,基于行的分割脚本,符合我的要求,将发现这是有用的。 |
![]() |
8
3
还有一个快速(有些脏)的内衬:
通过更改硬编码的3000值,可以调整每批的第一行数。 |
![]() |
9
2
我已经根据每个部分的大小对拆分文件做了一些修改。
|
![]() |
10
2
这样做: 文件1 还有一个快速(有些脏)的内衬:
通过更改硬编码的3000值,可以调整每批的第一行数。
文件2
文件3
等等 |
![]() |
11
1
听起来像是Unix命令拆分的作业:
只需在不到10分钟的时间内将55 GB的csv文件分割成21K块。 不过,它不是PowerShell的本地产品,但附带了例如用于Windows的Git包。 https://git-scm.com/download/win |
![]() |
12
0
我的要求有点不同。我经常使用逗号分隔和制表符分隔的ASCII文件,其中一行是单个数据记录。它们真的很大,所以我需要把它们分成可管理的部分(同时保留标题行)。 因此,我返回到我的经典vbscript方法,并将一个可以在任何Windows计算机上运行的小.vbs脚本猛击在一起(它将由Windows上的wscript.exe脚本主机引擎自动执行)。 这个方法的好处是它使用了文本流,所以底层数据不会被加载到内存中(或者至少不会一次全部加载)。结果是它的速度非常快,运行起来不需要太多内存。我刚刚在i7上使用这个脚本拆分的测试文件的文件大小约为1 GB,文本行数约为1200万,被拆分为25个部分文件(每个部分约有500K行),处理时间约为2分钟,并且在任何时候都没有超过3MB的内存。 这里要注意的是,它依赖于文本文件具有“行”(意味着每条记录用CRLF分隔),因为文本流对象使用“readline”函数一次处理一行。但是,如果你使用的是tsv或csv文件,那就太完美了。
|
![]() |
13
0
由于行在日志中是可变的,所以我认为最好采用每个文件多行的方法。以下代码片段在19秒内处理了400万行日志文件(18.83..秒)将其拆分为500000行块:
可以很容易地将其转换为带有参数的函数或脚本文件,从而使其更加通用。它使用了
|
![]() |
14
0
下面是我的解决方案,将一个名为patch6.txt(约32000行)的文件分割成1000行的单独文件。它不快,但它能完成任务。
|
![]() |
sorosh_sabz · 为什么插件llcsharp-v2报告失败 1 年前 |
![]() |
kristaps · 将嵌套的JSON输出导出到CSV文件 1 年前 |
|
Flamingo · 如何更改PowerShell exe的默认路径 1 年前 |
![]() |
arsaces · 将文本添加到特定文件的末尾 2 年前 |
![]() |
Astora · Powershell-在错误位置写入主机打印 2 年前 |
![]() |
siennac · 使用powershell更改html中的文本颜色 2 年前 |