Редактирование файла с использованием строки поиска в powershell - PullRequest
1 голос
/ 30 января 2020

У меня возникают трудности при написании сценария powershell / batch, который должен искать строку во входном файле, копировать содержимое строки в следующую строку и заменять строку другой строкой.

Например, если мой файл имеет следующее содержимое

James is awesome.

Ryan is handsome.

Henry is a bad boy.

Jim is studious

И вывод должен выглядеть так, когда скрипт вызывается с входными данными "***Henry***" & "***Glenn***"

James is awesome.

Ryan is handsome.

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

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

Jim is studious

Ответы [ 2 ]

0 голосов
/ 30 января 2020

Попробуй так:

$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 голосов
/ 30 января 2020

Это функция, которая найдет слово в строке, если найдена копия строки с новым словом.

Function ReplaceAndDuplicate([string[]]$drseus, $thing1, $thing2) {
  $drseus | % { 
    $_
    if ($_ -match $thing1) {
      $_ -replace $thing1, $thing2
    }
  }
}

Использование:

ReplaceAndDuplicate (Get-Content C:\temp\file.txt) "Henry" "Glenn"

И вывод выглядит как

James is awesome.
Ryan is handsome.
Henry is a bad boy.
Glenn is a bad boy.
Jim is studious
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...