【发布时间】:2013-10-17 01:16:29
【问题描述】:
我有这个脚本可以对文件进行一些正则表达式替换。我不明白为什么返回的字符串都删除了所有换行符?
示例文件内容(UTF-8,每行后有 CR-LF):
hello
hello
hello
脚本:
$content = Get-Content "c:\spikes\regexnewline\regexnewline.txt"
Set-Content "c:\spikes\regexnewline\regexnewline-2.txt" $content # test
$content = [regex]::Replace($content, "ll", "yy") #basic replace
Set-Content "c:\spikes\regexnewline\regexnewline-3.txt" $content
当然,文件regexnewline-2.txt 是输入文件的精确副本。但是为什么regexnewline-3.txt 的内容只有一行,末尾有一个 CR-LF?
heyyo heyyo heyyo\CR\LF
显然我在这里遗漏了一些东西。有人能看出来吗?
顺便说一句,我尝试使用 regex.Replace 并使用带有 4 个参数的重载,指定 RegexOptions、as documented on MSDN,但脚本失败,说明此方法没有 4 个参数重载。 Powershell 是否使用不同版本的 .Net 框架?
【问题讨论】:
-
@如果您在将
$content放入文件之前将其打印到命令行,您会看到什么?
标签: regex powershell replace