簡體   English   中英

數組未按預期存儲文本文件中的數據。 如何使用Powershell將每行的第一個單詞放入數組?

[英]Array is not storing data from text file as expected. How to get first word of each line into array using Powershell?

這是我的代碼:

Get-Content 'hist4.txt' | ForEach-Object { $_.split(" ")[0]} | 
   ForEach-Object { 

        $rgbArray += $_ 

        for( $i = 1; $i -le $rgbArray.length; $i++ ) {
          $rgbA0=$rgbArray[$i]
          $rgbA1=$rgbArray[$i + 1]

          //compare A0 and A1...
        }
   }

文本文件內容:

1 500
21 456
33 789
40 653 
54 900 
63 1000 
101 1203
  1. 我想加載文本文件。 Get-Content 'hist4.txt'
  2. 每行有兩個元素。 我需要第一個要素。 ForEach-Object { $_.split(" ")[0]}
  3. 我需要將每行的第一個元素存儲到數組中: $rgbArray += $_
  4. 然后遍歷數組的每個元素並執行以下操作: for( $i = 1; $i -le $rgbArray.length; $i++ )

如果我使用$rgbArray = @() ,則split()命令的整個元素列表都存儲在$rgbArray[0] 這阻止了我遍歷它們,因為數組長度僅為1,即使在數組的0位置存儲了數百個值。

如果我使用$rgbArray +=那么我確實可以循環使用元素。 但是,這會使數組的每個位置與最后一個位置相同,但加上下一個字符,而不是split命令中的整個元素。

例如: $rgbArray += $_輸出

$rgbArray[0] = 1
$rgbArray[1] = 12
$rgbArray[2] = 121
$rgbArray[3] = 1213
$rgbArray[4] = 12133
$rgbArray[5] = 121334

$rgbArray = @($_)輸出

$rgbArray[0] = 1 21 33 40 54 63 ....
$rgbArray[1] = 
$rgbArray[2] = 
$rgbArray[3] = 
$rgbArray[4] = 
$rgbArray[5] =

我需要在哪里:

$rgbArray[0] = 1
$rgbArray[1] = 21
$rgbArray[2] = 33
$rgbArray[3] = 40
$rgbArray[4] = 54
$rgbArray[5] = 63

等等。

我想知道我是否沒有正確創建數組,以及如何將每一行的第一個元素作為單獨的數組元素獲取?

在代碼的后面,我希望能夠將文本文件中不同行的第一個元素與其他第一個元素進行比較。

首先將前兩個管道元素的輸出分配給$rgbArray變量:

$rgbArray = Get-Content 'hist4.txt' | ForEach-Object { $_.Split(" ")[0] } 

平方之后,就可以開始處理數據了:

for( $i = 0; $i -lt ($rgbArray.Count - 1); $i++ ) {
  $current = $rgbArray[$i]
  $next    = $rgbArray[$i + 1]

  # compare $current and $next here
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM