我是powershell的新手.我有一个简单的PowerShell脚本,只是替换文本但我发现正则表达式替换在生成输出时将我的多行数据源转换为单行文本.我希望保留换行符.这是脚本的愚蠢版本.
$source=(Get-Content textfile.txt) $process1 = [regex]::Replace($source,"line","line2") $process1 | out-file -encoding ascii textfile2.txt
您可以使用这样的简单行创建一个测试文件调用textfile.txt来测试它
line line Some line More line here
我错过了一些明显的东西吗
谢谢,
Fadrian
这里你的问题是Get-Content返回一个字符串[](源文件中每行有一个项目),而[regex] :: Replace需要一个字符串.这就是为什么首先将数组转换为字符串,这意味着将所有项目集中在一起.
PowerShell提供了一个-replace运算符,可以更优雅地处理这种情况:
(Get-Content .\textfile.txt) -replace 'line','line2' | out-file -encoding ascii textfile2.txt
-replace运算符分别对数组的每个项进行操作,并将其应用于数组.
是的,它会进行正则表达式匹配和替换.例如:
> (Get-Content .\textfile.txt) -replace '(i|o|u)','$1$1' liinee liinee Soomee liinee Mooree liinee heeree
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。