我有一個看起來像這樣的 .txt 檔案(這些只是前幾行):
2003.09.23.,05:05:21:64,134,177,101
2009.03.10.,17:46:17:81,57,102,57
2018.01.05.,00:30:37:04,354,145,156
2011.07.11.,23:21:53:43,310,125,47
2011.06.26.,07:42:10:30,383,180,171
2014.01.24.,04:56:59:60,238,2,65
2012.07.28.,17:40:45:53,341,16,69
2006.03.17.,19:31:56:27,116,185,85
2006.12.28.,22:44:11:00,374,62,39
2009.08.03.,05:22:41:73,238,109,83
我已經成功地撰寫了一個程式,它逐行讀取檔案并在逗號處拆分內容,但是它沒有按照我想要的方式將不同的值存盤在指定的陣列中。
foreach($line in Get-Content .\auto.txt) {
if($line -match $regex){
$splitline = $line.Split(",")
#Write-Host $splitline[0]
$date = $splitline[0]
$time = $splitline[1]
$speed = $splitline[2]
$distancefront = $splitline[3]
$distanceback = $splitline[4]
}
}
Write-Host $splitline[0]上面注釋的命令回傳2003.09.23.它應該的方式,但是如果我用 呼叫陣列的第一個元素Write-Host $date[0],它回傳2. 它似乎在逐個字符地存盤日期。我是 powershell 的新手,誰能給我一些有關如何解決這個問題的指導?先感謝您。
uj5u.com熱心網友回復:
在開始使用加法運算子之前,您需要為變數分配一個空陣列 - 否則 PowerShell 將顯示“Huh, $null "some string", that's going to result in "some string"”,并且您最終會得到一個字串而不是陣列。
$date = @()
$time = @()
$speed = @()
$distancefront = @()
$distanceback = @()
foreach($line in Get-Content .\auto.txt) {
if($line -match $regex){
$splitline = $line.Split(",")
#Write-Host $splitline[0]
$date = $splitline[0]
$time = $splitline[1]
$speed = $splitline[2]
$distancefront = $splitline[3]
$distanceback = $splitline[4]
}
}
然而,更慣用的方法是將決議完全卸載到ConvertFrom-Csvor Import-Csv- 這樣你最終會得到一個物件陣列(每行 1 個),而不是 5 個具有單個列值的不相交的陣列:
$data = Import-Csv .\auto.txt -Header Date,Time,Speed,DistanceFront,DistanceBack
之后您可以執行以下操作:
PS ~> $data[0]
Date : 2003.09.23.
Time : 05:05:21:64
Speed : 134
DistanceFront : 177
DistanceBack : 101
PS ~> $data[0].Date
2003.09.23.
PS ~> $data[0].Time
05:05:21:64
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/370375.html
標籤:电源外壳
下一篇:如何將1個以上的注釋檢索到CSV
