【问题标题】:Merging txt files as columns into csv with powershell使用powershell将txt文件作为列合并到csv中
【发布时间】:2018-06-12 13:03:14
【问题描述】:

很抱歉,如果这个问题已经被问过,但我一辈子都找不到有效的答案。

我有一堆 .txt 文件,每个文件都包含一列内容。我想将它们合并到一个 .csv 中,其中各列将彼此相邻。

所以如果第一个输入in1.txt是:

banana
pear
apple
orange

第二个,in2.txt是

airplane
truck
car
bus

我希望生成的 csv,比如 out.csv,是:

banana,airplane
pear,truck
apple,car
orange,bus

有没有办法用 Powershell 做到这一点?

【问题讨论】:

  • 是的,有办法做到这一点。我建议查看Get-ContentNew-ObjectExport-CSV 命令并编写一些代码。当您遇到特定的代码问题时,您可以在此处回复,我们将为您提供帮助。
  • 另请注意,文本文件需要在每个文件中具有完全相同数量的条目,否则您将需要编写代码来处理它们没有的情况。
  • @EBGreen 感谢您的意见。实际上,我完全被困在尝试连接对象而不是循环,以至于我没有任何远程工作。这就是我没有发布任何代码的原因,因为它不需要调试而是完全重新思考。对不起,如果我不想尝试一下,感谢您的帮助!
  • 没问题。将来,尽管发布您尝试过的内容,即使它根本不接近也是一个好主意。如果没有别的,它可以让我们了解您的知识水平,以便我们可以制定更适合您的答案。

标签: powershell csv export-to-csv


【解决方案1】:

嗯,我同意两个 cmets 的 EBGreen,但是为了指导你一些方向......

如果你的两个文件长度相同,你可以使用简单的 for 循环,如果 不,你应该更努力一点,但你可以从这个想法开始......

$txt1 = Get-Content C:\txt1.txt
$txt2 = Get-Content C:\txt2.txt

$csv = @()
for ($i = 0; $i -lt $Txt1.Count; $i++){
$row = "" | Select txt1,txt2
$row.txt1 = $txt1[$i]
$row.txt2 = $txt2[$i]
$csv += $row
}

$csv | Export-Csv c:\txt.csv -NoTypeInformation

【讨论】:

  • 非常感谢!那解决了它。我完全被尝试连接不同的对象所困扰,以至于我没有考虑过制作一个循环,回想起来这似乎很明显。感谢您的帮助!
  • 仅供参考,如果文件非常大,使用 ArrayList 而不是 Array 会快得多。
  • 当然,但只是为了保持简单
猜你喜欢
  • 2020-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-24
  • 2020-02-17
  • 2015-03-09
  • 2018-09-15
  • 1970-01-01
相关资源
最近更新 更多