在迭代中,需要将行存储在变量中

时间:2015-07-07 08:22:26

标签: powershell

所以,首先我的场景:有一个文件,我的脚本读取该文件,计算行数并逐行读取内容。

我的剧本:

$lines = Get-Content C:\RDS\snaps.txt | Measure-Object -Line
$line = $lines.Lines
for($i=1; $i -le ($line-1); $i++)
{
   #Need to store a line in a variable
}

我需要这样: 对于小于或等于($ line-1)的每个“i”值,我需要读取特定的行。

示例:如果i = 1,表示第一行,我需要读取第一行并将其存储在变量中。如果i =($ line-1),表示最后一行上方的行,需要存储该特定行并将其存储在同一个变量中。

如何做到这一点?我无法预测文件中有多少行。我的脚本需要做哪些更改?任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:2)

您可以使用简单的foreach循环迭代每一行:

$Content = Get-Content 'C:\RDS\snaps.txt'
$lineCount = 0;
$lastLine = ''
foreach ($line in $content) 
{
    $lineCount++
    # Insert your condition to store the lastline: if ($lineCount -eq ...)
    $lastLine = $line
}

答案 1 :(得分:1)

这个问题真的不太清楚,但如果你只是想读一个特定的行,你就不需要for循环了。实际上get-content将为每一行返回一个对象的集合(数组)。因此,可以使用$content[n-1]访问n th 行。

所以

$content=Get-Content C:\RDS\snaps.txt
$content[0] #firstline
$content[-2]# the line before the last line