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"
结果:
- ghij
- ghmno
- ghabc
下面是我想做的。找到结果“gh”并在该行的末尾添加回车 return,同时将所有内容保留在文本文件中。
发件人:
- abcdefmno
- abcdefpqr
- ghij
- abcdef
- ghmno
- abcdef
- abcdef
- ghabc
- mnop
收件人:
- abcdefmno
- abcdefpqr
- ghij
- abcdef
- ghmno
- abcdef
- abcdef
- ghabc
- mnop
感谢您的帮助!
您可以在单个管道中实现此目的:
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
我正在尝试解析一个文本文件并匹配一组字符,然后在该行的末尾添加一个回车 return 以添加一些间距。我已经尝试了多种不同的方法来做到这一点,但都没有成功。下面的代码示例导致匹配,并且 return 仅匹配匹配的行,不添加回车行。
[string[]]$arrayFromFile = Get-Content -Path "C:\abc.txt"
$Return = $arrayFromFile -match 'ghijk' -split "`r"
$Return | Out-File "C:\abc.txt"
结果:
- ghij
- ghmno
- ghabc
下面是我想做的。找到结果“gh”并在该行的末尾添加回车 return,同时将所有内容保留在文本文件中。
发件人:
- abcdefmno
- abcdefpqr
- ghij
- abcdef
- ghmno
- abcdef
- abcdef
- ghabc
- mnop
收件人:
- abcdefmno
- abcdefpqr
- ghij
- abcdef
- ghmno
- abcdef
- abcdef
- ghabc
- mnop
感谢您的帮助!
您可以在单个管道中实现此目的:
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