Powershell - 搜索和替换 - 第一个匹配的文本字符串出现 - 保存输出文件
Powershell - 搜索和替换 - 第一个匹配的文本字符串出现 - 保存输出文件
我正在尝试仅替换在一堆文本文件中找到的字符串的第一个出现。我花了几个小时在这上面,但似乎无法解决。
我无法让这个工作。[PowerShell脚本以查找和替换具有特定扩展名的所有文件](https://stackoverflow.com/questions/2837785/powershell-script-to-find-and-replace-for-all-files-with-a-specific-extension)
$text_file_ext = 'txt' Get-ChildItem $base_dir -Recurse -Include "*.$text_file_ext" | ForEach-Object { (Get-Content $_.FullName) | foreach -Begin { $found = $false; $search = 'APPLE' } -Process { if (! $found -and ($_ -match $search)) { $_ = $_ -replace $search, ' COFFEE' $found = $true } #$_ Set-Content $_.FullName} }
我还参考了这个:[使用PowerShell对一组文本文件进行查找和替换](http://www.adamtheautomator.com/use-powershell-to-do-a-findreplace-on-a-set-of-text-files/)
示例文本:
Lorem ipsum APPLE dolor sit amet, consectetur adipiscing elit. Donec a pharetra nisl, vitae APPLE vehicula turpis. Aenean eleifend bibendum quam, nec dapibus felis viverra ut. Mauris nec nibh scelerisque, aliquet ligula in, viverra justo. Interdum et malesuada fames ac APPLE ante ipsum primis in faucibus.
非常感谢任何建议。
最终版本工作
$search ="APPLE" $text_file_ext = 'txt' Get-ChildItem $base_dir -Recurse -Include "*.$text_file_ext" | ForEach-Object { (Get-Content $_.FullName -Raw) -replace " (.+?)$search(.+)",'$1COFFEE$2'| Set-content $_.Fullname }