繁体   English   中英

如何使用PowerShell将txt文件中每行的第一个单词放入Excel工作表中?

[英]How do I take the first word from each line in txt file and put them into an Excel sheet using PowerShell?

我正在尝试使用PowerShell在.ctl文件的每一行中采用第一个单词,并将该单词放入Excel工作表中。

我看了这个问题, 如何使用Powershell从文本文件中提取字符串并将其复制到excel表中 ,这似乎是我需要做的,除了每个单词与其他单词无关,并且我对代码没有真正的了解。 我只是手动进行此操作,但是有数百个文件。

我找到了,但是我不确定哪个函数会选择第一个单词

$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”部分,其余的都可以忽略。

这将在一个文件夹中的数百个文件上执行。 我将如何循环播放?

Get-Content ".\file.txt" | %{ $_.Substring(0,$_.IndexOf(" "))} | Select-Object -First 10

除去|Select-Object -First 10以获取文件的全部内容。

此解决方案还假定您要在空间上拆分。

如果在输出末尾添加逗号,则可以将输出另存为将在excel中打开的.csv文件。

#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

参考: 文件外

完整的代码可以做到:

$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]
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM