我正在尝试将 contig.exe 的输出文件解析为逗号分隔值文件。我已经开发了一种方法来执行此操作,即 Notepad++,但考虑到我必须解析的文件数量(数百个文本文件),我希望使用命令行或 PowerShell 来实现自动化方法。
例如,我想将其转换为:
Contig v1.7 - Makes files contiguous
Copyright (C) 1998-2012 Mark Russinovich
Sysinternals - www.sysinternals.com
Processing E:\$Mft...
E:\$Mft is in 80309 fragments
Processing E:\$Mft::$BITMAP...
E:\$Mft::$BITMAP is in 2202 fragments
Summary:
Number of files processed : 2
Average fragmentation : 41255.5 frags/file
...变成这样:
E:\$Mft,80309 fragments
E:\$Mft::$BITMAP,2202 fragments
有什么想法吗?谢谢!
答案1
在 powershell 中,只需使用运算符应用正则表达式-match
,然后输出用逗号分隔的每个匹配项:
contig.exe | foreach-object{ if($_ -match "(.*) is in (.*)") {"`"$($Matches[1])`",`"$($Matches[2])`""}}
输出:
"E:\$Mft","80309 fragments"
"E:\$Mft::$BITMAP","2202 fragments"
请注意,我已将列括在引号中,以处理带有空格的列