首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在powershell中使用搜索字符串编辑文件

在powershell中使用搜索字符串编辑文件
EN

Stack Overflow用户
提问于 2020-01-30 16:14:41
回答 2查看 43关注 0票数 1

我在编写powershell/批处理脚本时遇到了困难,该脚本需要在输入文件中搜索字符串,将行的内容复制到下一行,并将字符串替换为另一个字符串。

例如,如果我的文件有以下内容

代码语言:javascript
复制
James is awesome.

Ryan is handsome.

Henry is a bad boy.

Jim is studious

和输出应该类似于调用脚本时的输入"***Henry***" & "***Glenn***"

代码语言:javascript
复制
James is awesome.

Ryan is handsome.

***Henry*** is a bad boy.

***Glenn*** is a bad boy.

Jim is studious
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-30 16:42:55

这是在一行中查找单词的函数,如果发现它与新单词重复行的话。

代码语言:javascript
复制
Function ReplaceAndDuplicate([string[]]$drseus, $thing1, $thing2) {
  $drseus | % { 
    $_
    if ($_ -match $thing1) {
      $_ -replace $thing1, $thing2
    }
  }
}

使用:

代码语言:javascript
复制
ReplaceAndDuplicate (Get-Content C:\temp\file.txt) "Henry" "Glenn"

和输出看起来像

代码语言:javascript
复制
James is awesome.
Ryan is handsome.
Henry is a bad boy.
Glenn is a bad boy.
Jim is studious
票数 0
EN

Stack Overflow用户

发布于 2020-01-30 16:43:42

就像这样:

代码语言:javascript
复制
$sel = Select-String -Path "FilePath" -Pattern "Henry"
If ($sel -ne $null) {
  $str = Select-String -Path "FilePath" -Pattern "^(Henry).*"
  $str = $str -replace "Henry", ""
  (Get-Content "FilePath") | Foreach {
        $_
        if ($_ -match "Henry")  {
            "`nJim $($str)"
        }
    } | Set-Content "FilePath"
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59990167

复制
相关文章

相似问题

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