我在命令行上使用 FIND 将一个非常大的 csv 文件缩小为一个较小的文件,其中仅包含包含特定字符串的行。
原始文件有 339MB,包含数百万行。输出文件有 20MB,包含约 550K 行。运行时间非常长 - 超过 1 小时。
我怎样才能使我的查找命令更高效并且更快地完成?
OS Name: Microsoft Windows 10 Enterprise
OS Version: 10.0.18363 N/A Build 18363
OS Manufacturer: Microsoft Corporation
OS Configuration: Member Workstation
OS Build Type: Multiprocessor Free
Product ID: 00329-00000-00003-AA571
Original Install Date: 7/21/2020, 8:23:02 AM
System Boot Time: 11/20/2020, 7:13:17 PM
System Manufacturer: VMware, Inc.
System Model: VMware Virtual Platform
System Type: x64-based PC
Processor(s): 2 Processor(s) Installed.
[01]: Intel64 Family 6 Model 63 Stepping 0 GenuineIntel ~2594 Mhz
[02]: Intel64 Family 6 Model 63 Stepping 0 GenuineIntel ~2594 Mhz
BIOS Version: Phoenix Technologies LTD 6.00, 12/12/2018
Windows Directory: C:\WINDOWS
System Directory: C:\WINDOWS\system32
Boot Device: \Device\HarddiskVolume1
System Locale: en-us;English (United States)
Input Locale: en-us;English (United States)
Time Zone: (UTC-05:00) Eastern Time (US & Canada)
Total Physical Memory: 16,384 MB
Available Physical Memory: 7,412 MB
Virtual Memory: Max Size: 18,816 MB
Virtual Memory: Available: 10,085 MB
Virtual Memory: In Use: 8,731 MB
答案1
答案2
您可以尝试使用 PowerShell。我不知道它是否更快,但值得一试。
Select-String -Path "Filename.txt" -Pattern "WhatToLookFor" | Select-Object -ExpandProperty Line | Out-File "results.txt"
Select-String
搜索文本
Select-Object
从 Select-String 中选择Line
结果的属性
Out-File
将输出写入文件
答案3
谢谢你的建议。
我应该早点看到这一点。我正在对存储在网络驱动器上的数据运行命令。当我将输入文件移动到本地磁盘并确保输出也移动到本地文件时,性能提高到可接受的水平。实际上现在相当快,大约 1 分钟即可完成。
现在感觉不太聪明。
再次谢谢你