如何解决PowerShell:替换换行符并连接两行
我正在尝试删除“三”的第一场比赛中的新行,但我不确定为什么下面的例子不起作用:
$var = 'one two three
four five six
seven'
$var = $var.replace("three`n",'three ')
$var
所需的输出:
one two three four five six
seven
解决方法
要考虑换行符(换行符)格式中的变化,请将 -replace
operator 与 regex {{1} } 以与平台/文件格式无关的方式匹配换行符:
\r?\n
正则表达式 $var = 'one two three
four five six
seven'
$var -replace 'three\r?\n','three '
匹配 Windows 格式的 CRLF(\r?\n
)和 Unix 格式的 LF(仅限 \r\n
)换行符。
上述内容使用逐字 regex 转义序列,由 \n
运算符底层的 .NET 正则表达式引擎解释。表示为 expandable strings (-replace
) 内的 PowerShell 转义序列,换行符格式为 "..."
和 `r`n
。
您也可以将最后一个语句表示为 `n
,但通常最好将 verbatim 字符串 ($var -replace "three`r?`n",'three '
) 传递给 .NET 正则表达式引擎,以避免混淆PowerShell 预先解释与 .NET 正则表达式引擎解释的内容。
请注意,您的脚本文件的换行符格式决定了其中多行字符串文字的换行符格式,因此如果您的脚本文件使用 CRLF 换行符, '...'
将不匹配,因为输入字符串中的 LF ("three`n"
) 前面是 CR ("`n"
)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。