加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 – Powershell取代丢失换行符

发布时间:2020-12-14 06:30:29 所属栏目:百科 来源:网络整理
导读:我是powershell的新手.我有一个简单的PowerShell脚本,只是替换文本但我发现正则表达式替换在生成输出时将我的多行数据源转换为单行文本.我希望保留换行符.这是脚本的愚蠢版本. $source=(Get-Content textfile.txt)$process1 = [regex]::Replace($source,"lin
我是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

阅读更多here和here.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读