我正在尝试使用PowerShell在.ctl文件的每一行中提取第一个单词,并将该单词放入Excel工作表中。
我看着这个问题How to Extract Strings from a text file and copy them to excel sheet using Powershell,看来这是我需要做的,除了每个单词与其他单词都不相关并且我对代码没有真正的了解。我只是手动进行此操作,但是有数百个文件。
我找到了这个,但是我不确定哪个函数会选择第一个单词
$lines = Get-Content "C:\ExampleFolder\Example.txt"
foreach ($line in $lines) {
Write-Host ($line.Split(" "))[0]
}
示例行如下所示:
branch_description NULLIF branch_description=' 8]^NULL^[' "substr(:branch_description,6)",
我只需要“ branch_description”部分,其余部分可以忽略。
这将对一个文件夹中的数百个文件执行。我将如何循环播放?
答案 0 :(得分:0)
Get-Content ".\file.txt" | %{ $_.Substring(0,$_.IndexOf(" "))} | Select-Object -First 10
删除|Select-Object -First 10
以获取文件的全部内容。
此解决方案还假定您要在空间上拆分。
如果在输出末尾添加逗号,则只需将输出另存为.csv文件即可在excel中打开。
#The default encoding for Out-File [pre v6] is 'Unicode'; in [ps6] it is 'UTF8NoBOM'. In this example I chose ASCII, though you should choose what best fits your use-case.
Get-Content ".\file.txt" | %{ $_.Substring(0,$_.IndexOf(" ")) + "," } | Out-file -Path ".\output.csv" -Encoding ASCII -Append
ref:Out-File
答案 1 :(得分:0)
完整的代码可以做到:
$lines = Get-Content "C:\ExampleFolder\Example.txt"
读取文件并存储字符串数组。文件中的每一行都是数组的一个元素
foreach ($line in $lines) {
这部分代码是循环的开始。它遍历字符串数组,并在括号中对数组中的每个元素执行以下代码
Write-Host ($line.Split(" "))[0]
魔术来了。 Write-Host仅用于Powershell窗口中的输出。您必须将此命令替换为写入excel-或csv文件的内容(或将其存储在数组中以备后用)
该命令中的其余命令将字符串数组中的一行(文本文件的一行)分开。它使用空格作为符号(“”)将其拆分为另一个字符串数组。代码行([0])末尾的访问标识符需要外部括号,这意味着您只需要第一个对象。
}
关闭循环。
希望这会有所帮助
编辑:示例代码:
Out-File -FilePath "myergfile.csv" -Encoding UTF8 -Force -InputObject "Value"
$lines = Get-Content "C:\ExampleFolder\Example.txt"
foreach ($line in $lines){
Out-File -FilePath "myergfile.csv" -Encoding UTF8 -Append -InputObject ($line.Split(" "))[0]
}