给定test.txt包含:
test
message
Run Code Online (Sandbox Code Playgroud)
我想最终得到:
testing
a message
Run Code Online (Sandbox Code Playgroud)
我认为以下内容应该有效,但它不会:
Get-Content test.txt |% {$_-replace "t`r`n", "ting`r`na "}
Run Code Online (Sandbox Code Playgroud)
我怎样才能找到并替换我所发现的包含CRLF的地方?
Don*_*nes 37
CRLF是两个字符,当然还有CR和LF.但是,`n由两者组成.例如:
PS C:\> $x = "Hello
>> World"
PS C:\> $x
Hello
World
PS C:\> $x.contains("`n")
True
PS C:\> $x.contains("`r")
False
PS C:\> $x.replace("o`nW","o There`nThe W")
Hello There
The World
PS C:\>
Run Code Online (Sandbox Code Playgroud)
我觉得你遇到了问题`r.我能够`r从您的示例中删除,仅使用`n,并且它有效.当然,我不确切知道你是如何生成原始字符串所以我不知道那里有什么.
Pet*_*ale 23
根据我的理解,Get-Content在通过管道滚动文本文件时会消除所有换行/回车.要执行多行正则表达式,您必须将字符串数组重新组合成一个巨大的字符串.我做的事情如下:
$text = [string]::Join("`n", (Get-Content test.txt))
[regex]::Replace($text, "t`n", "ting`na ", "Singleline")
Run Code Online (Sandbox Code Playgroud)
澄清:小文件只有人!请不要在40 GB的日志文件中尝试这个:)
nik*_*kov 18
与-Raw你应该得到你所期望的
小智 6
如果您想删除所有换行符并将其替换为某些字符(例如逗号),那么您可以使用以下命令。
(Get-Content test.txt) -join ","
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为 Get-Content 返回行数组。您可以将其视为许多语言中可用的标记化函数。
| 归档时间: |
|
| 查看次数: |
84486 次 |
| 最近记录: |