从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:
答案 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]
}