【发布时间】:2017-08-29 12:26:12
【问题描述】:
我有一个我正在尝试解决的问题,但是,由于我不具备 PowerShell 知识,事实证明它比我希望的要难。所以任何帮助将不胜感激。
问题可以简化为:
在 txtfile 中查找字符串
提取该字符串后行的信息
将信息存储在句柄中
在 txtfile 中找到第二个字符串并重复该过程
将这两个字符串存储在一个新文件中或删除 txt 文件中的所有其他内容。
然后我尝试对大约 20k 个文件执行此操作。我希望在他们的关键字和逗号下分隔信息,以便我可以将它们导入其他系统。
我的文件看起来有点像下面
random words
that are unimportant
Keyword
FirstlineofNumbersthatIwanttoExtract
random words again that are unimportant
Secondkeyword
SecondLineOfNumbersThatIWantToExtract
end of the file
但是,就我要提取的行所在的行而言,所有文件都不相似。我希望输出类似于
Keyword, SecondKeyword
FirstLineOfNumbersThatIWantToExtract, SecondLineOfNumbersThatIWantToExtract
完成了。我已经走到这一步了
[System.IO.DirectoryInfo]$folder = 'C:\users\xx\Desktop\mappcent3'
foreach ($file in ($folder.EnumerateFiles())) {
if ($file.Extension -eq '.txt') {
$content = Get-Content $file
$FirstRegex = 'KeyWordOne
(.+)$'
$First_output = "\1"
$test = Select-String -Path $file.FullName -Pattern $FirstRegex
}
}
【问题讨论】:
-
单个文件有多大?
-
每个文件大约 1-2Kbs,所以它们并不大。
-
你知道你有什么版本的PowerShell吗?
(Get-Host).Version -
为什么使用
[System.IO.DirectoryInfo]而不仅仅是Get-ChildItem -Path "C:\Users\xx\Desktop\mappcent3\*.txt"? -
@JeffZeitlin 这肯定是来自互联网的代码位,由于我不具备 powershell 知识