首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Powershell中将内容插入文本文件

在Powershell中将内容插入文本文件
EN

Stack Overflow用户
提问于 2009-12-10 01:49:10
回答 5查看 74.8K关注 0票数 33

我想在Powershell中将内容添加到文本文件的中间。我正在搜索一个特定的模式,然后在它后面添加内容。注意,这是在文件的中间。

我目前拥有的是:

代码语言:javascript
复制
 (Get-Content ( $fileName )) | 
      Foreach-Object { 
           if($_ -match "pattern")
           {
                #Add Lines after the selected pattern
                $_ += "`nText To Add"
           }
      }
  } | Set-Content( $fileName )

然而,这不起作用。我猜想是因为$_是不可变的,还是因为+=操作符没有正确地修改它?

向$_追加将在下面的Set-Content调用中反映的文本的方法是什么?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-12-10 01:54:06

只需输出额外的文本,例如

代码语言:javascript
复制
(Get-Content $fileName) | 
    Foreach-Object {
        $_ # send the current line to output
        if ($_ -match "pattern") 
        {
            #Add Lines after the selected pattern 
            "Text To Add"
        }
    } | Set-Content $fileName

您可能不需要额外的n`,因为PowerShell将为您行终止每个字符串。

票数 51
EN

Stack Overflow用户

发布于 2009-12-12 17:26:55

这样如何:

代码语言:javascript
复制
(gc $fileName) -replace "pattern", "$&`nText To Add" | sc $fileName

我认为这是相当直接的。唯一不明显的是"$&",它指的是与"pattern“匹配的内容。更多信息:http://www.regular-expressions.info/powershell.html

票数 14
EN

Stack Overflow用户

发布于 2012-07-16 19:46:58

这个问题可以通过使用数组来解决。文本文件是字符串数组。每个元素都是一行文本。

代码语言:javascript
复制
$FileName = "C:\temp\test.txt"
$Patern = "<patern>" # the 2 lines will be added just after this pattern 
$FileOriginal = Get-Content $FileName

<# create empty Array and use it as a modified file... #>

$FileModified = @() 

Foreach ($Line in $FileOriginal)
{    
    $FileModified += $Line

    if ($Line -match $patern) 
    {
        #Add Lines after the selected pattern 
        $FileModified += 'add text'
        $FileModified += 'add second line text'
    } 
}
Set-Content $fileName $FileModified
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1875617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档