将内容插入Powershell中的文本文件中的特定位置

时间:2015-07-28 13:42:16

标签: powershell

我想在Powershell中将内容添加到文本文件的特定位置。 我尝试使用添加内容,但它在文件的末尾添加了文本。

1 个答案:

答案 0 :(得分:5)

这是你可以做到这一点的一种方式。基本上只是将整个文件存储在一个变量中,然后循环遍历所有行以找到 where 你要插入新的文本行(在我的情况下,我是根据搜索确定这个标准)。然后将新文件输出写回文件,覆盖它:

$FileContent = 
    Get-ChildItem "C:\temp\some_file.txt" |
        Get-Content

$FileContent
<#
this is the first line
this is the second line
this is the third line
this is the fourth line
#>

$NewFileContent = @()

for ($i = 0; $i -lt $FileContent.Length; $i++) {
    if ($FileContent[$i] -like "*second*") {
        # insert your line before this line
        $NewFileContent += "This is my newly inserted line..."
    }

    $NewFileContent += $FileContent[$i]
}

$NewFileContent |
    Out-File "C:\temp\some_file.txt"

Get-ChildItem "C:\temp\some_file.txt" |
    Get-Content
<#
this is the first line
This is my newly inserted line...
this is the second line
this is the third line
this is the fourth line
#>

在上面的例子中,我使用以下条件测试来测试特定行是否应该插入新行:

$FileContent[$i] -like "*second*"