Powershell 搜索匹配的文本文件并在行尾添加回车 return

Powershell search text file for match and add carriage return at the end of the line

我正在尝试解析一个文本文件并匹配一组字符,然后在该行的末尾添加一个回车 return 以添加一些间距。我已经尝试了多种不同的方法来做到这一点,但都没有成功。下面的代码示例导致匹配,并且 return 仅匹配匹配的行,不添加回车行。

[string[]]$arrayFromFile = Get-Content -Path "C:\abc.txt" 
$Return = $arrayFromFile -match 'ghijk' -split "`r"
$Return | Out-File "C:\abc.txt" 

结果:

下面是我想做的。找到结果“gh”并在该行的末尾添加回车 return,同时将所有内容保留在文本文件中。

发件人:

收件人:




感谢您的帮助!

您可以在单个管道中实现此目的:

Get-Content -Path "C:\abc.txt" | foreach {
   $_
   if ($_ -like "gh*") {
       "" # additional empty line
   }
} | Out-File "C:\abc.txt" 

而不是插入任何换行符或回车returns,输出一个空行(空字符串)就足够了。换行符将由 Out-File.

自动处理

而不是-like "gh*"(为了满足你的例子的要求),你当然可以做-match <your regex>或任何你喜欢的。

我们将 switch 语句中的所有步骤与 -Regex-File 参数结合起来。它将逐行读取文件,我们匹配字母 gh 并在这些匹配行上向输出添加一个空行。所有这些都在 $return 中捕获,然后我们使用 Set-Content 将其写回。

$file = 'c:\abc.txt'

$return = switch -Regex -File $file {
    gh {$_; ''}
    default {$_}
}

$return | Set-Content $file -Encoding UTF8

注意 Out-File 编码可能有问题,因此我将其更改为 Set-Content