每3行后在文本文件/变量中添加一行文本

时间:2017-03-20 15:56:58

标签: powershell

从Matt那里得到答案之后,从别的地方尝试了这个解决方案,但没有工作(仅在前3行,之后停止了

$variabele = Set-Content "Next objects:" ($variabele | % {$l = 1} {if ($l++ % 3) {$} else {$,''}}
马特给出了一个完美适合我的答案

$variabele = Get-Content "c:\temp\objects.txt" -ReadCount 3 | ForEach-Object{$_;"Next Objects:"}

我在Powershell中有一个名为$variabele的变量来自一个名为objects.txt的文本文件,它有一堆这样的行:

Black book
Green yard
Red skies
Green cups
Yellow sun
Blue paint
Brown sand
Black hole
White cloud

现在文件可能包含更多行,我已将文件放在$variabele = Get-Content objects.txt

等变量中

我将使用$variabele稍后将Add-Content otherfile.txt $variabele添加到另一个文本文件中。

基本上我需要的是在$variabele变量中的每3行之后添加“Next objects:”行,或者在objects.txt文件中添加“.. {/ p>

因此变量可能看起来像这样:

Black book
Green yard
Red skies
Next objects:
Green cups
Yellow sun
Blue paint
Next objects:
Brown sand
Black hole
White cloud
Next objects:

2 个答案:

答案 0 :(得分:4)

如果您可以选择在读取文件时执行此操作,那么我只使用-ReadCount。

Get-Content "c:\temp\objects.txt" -ReadCount 3 | ForEach-Object{$_;"Next Objects:"}

这将在每组三行之后输出文本。将其写回文件或将其保存到变量中。

答案 1 :(得分:1)

使用常规for loop逐行将行添加到新文件中,并添加" Next对象:"第三次排队:

$file = Get-Content objects.txt
for($i = 0; $i -lt $file.Count; $i++){
    if($i % 3 -eq 0){
        # current line index is divisible by 3, add string
        Add-Content -Path newfile.txt -Value "Next objects:"
    }
    # add the current line
    Add-Content -Path newfile.txt -Value $file[$i] 
}