Заменить строку в текстовом документе в Powershell

#powershell

#powershell

Вопрос:

У меня есть текстовый файл под названием «delete.txt «. Содержимое

 My name is "David", "David" 
  

Я хочу заменить второе «Дэвид» на «Привет». Я могу заменить их оба только этим:

 $David = Get-Content -path C:UsersDavidDocumentsdelete.txt 
$David -replace "David", "Hello" | Out-File C:UsersDavidDocumentsdelete.txt  
  

В файле может быть больше «David», но я просто хочу заменить второй.

Комментарии:

1. Таким образом, вы также можете искать запятую перед «David». Или вы ищете «David», за которым следует конец строки. Это зависит от того, как выглядит ваш входной файл.

2. @Olaf. Thansk такой способ мышления на самом деле решает мою проблему 🙂 Но просто из любопытства, есть ли способ найти позицию начала двух «Дэвидов»

3. Конечно… взгляните на командлет Select-String

Ответ №1:

Вы можете просто сделать:

 $David -replace '"David", "David"','"David", "Hello"' | Out-File C:UsersDavidDocumentsdelete.txt
  

Комментарии:

1. Это тоже работает, спасибо. Комментарий от from Olaf тоже работает… Также ваш вчерашний ответ мне очень помог, особенно трюк со скобками