首页 > 解决方案 > 如何使用 Powershell 为文件中的每一行创建一个新数组?

问题描述

我有一个 txt 文件,其当前输出如下所示:

filetest.WIN.txt Wed Feb 10 12:00:37 2021
filetest.VID.avi Wed Feb 10 12:00:51 2021

我基本上需要每一行都是它自己的数组,每个项目由一个空格分隔以组成数组中的项目。所以我可以对每一行的同一个数组项采取行动。

我已经尝试过了,但是它将整个文件放入 1 个大数组中:

$arrayFromFile = Get-Content -Path $Path

$newArray =$arrayFromFile.Split(" ")

$newArray

但输出是这样的:

filetest.WIN.txt
Wed
Feb
10
12:00:37
2021
filetest.VID.avi
Wed
Feb
10
12:00:51
2021

如果它更有效,我也愿意接受其他方式。

标签: arrayspowershell

解决方案


继续我的评论...

您的代码行可以重构为此。

***笔记:

我正在使用 PowerShell 变量压缩来同时分配给变量和输出。这不是要求,只是一种选择。***

($NewArray = (Get-Content -Path 'D:\Temp\FileData.txt').Split(''))
# Results
<#
filetest.WIN.txt
Wed
Feb
10
12:00:37
2021
filetest.VID.avi
Wed
Feb
10
12:00:51
2021
#>

正如我所说,这是一个数组,您可以通过这样做来确定这一点

$NewArray.GetType()
# Results
<#
IsPublic IsSerial Name                                     BaseType 
-------- -------- ----                                     -------- 
True     True     Object[]                                 System.Array
#>

或者这样做。

$NewArray[0]
# Results
<#
filetest.WIN.txt
#>

$NewArray[9]
# Results
<#
10
#>

或者这是你的用例......

# The default display
(
$NewDataObject  = Import-Csv -Path 'D:\Temp\FileData.txt' -Delimiter ' ' -Header FileName, 
                                                                                 DayName, 
                                                                                 Month,
                                                                                 DayNumber, 
                                                                                 Time, 
                                                                                 Year
)
# Results
<#
FileName  : filetest.WIN.txt
DayName   : Wed
Month     : Feb
DayNumber : 10
Time      : 12:00:37
Year      : 2021

FileName  : filetest.VID.avi
DayName   : Wed
Month     : Feb
DayNumber : 10
Time      : 12:00:51
Year      : 2021
#>
# Or forced to display as a table.
(
$NewDataObject  = Import-Csv -Path 'D:\Temp\FileData.txt' -Delimiter ' ' -Header FileName, 
                                                                                 DayName, 
                                                                                 Month,
                                                                                 DayNumber, 
                                                                                 Time, 
                                                                                 Year | 
Format-Table -AutoSize
)
# Results
<#
FileName         DayName Month DayNumber Time     Year
--------         ------- ----- --------- ----     ----
filetest.WIN.txt Wed     Feb   10        12:00:37 2021
filetest.VID.avi Wed     Feb   10        12:00:51 2021
#>

推荐阅读