PowerShell中读取多行文本示例(powershell 输出变量)难以置信

随心笔谈2年前发布 admin
196 0 0

文章摘要

这篇文章讨论了在PowerShell 3.0及以上版本中使用`Get-Content`命令的不同方法及其效果。文章指出,默认情况下,`Get-Content`会将文本文件以单行读取并返回一个多行数组,通过`-join`操作符可以生成一个字符串。然而,通过使用`-Raw`参数,可以直接获取到类似的结果。尽管两者在大部分情况下结果相同,但当文件末尾存在换行符时,可能会导致细微的差异。最终验证表明,当对`$ContentWithLinebreaks`进行`TrimEnd`处理后,两个结果确实相等。



适用于PowerShell3.0或者更高本版

有时,你可能会偶尔发现下面的代码:

复制代码 代码如下:

$FilePath=”$env:SystemRoot\WindowsUpdate.log”

$ContentsWithLinebreaks=(Get-Content $FilePath) -join “`r`n”

猜猜它,想干啥子奥,Get-Content 默认将文本文件以单行读取,并且返回一个多行数组,而-join操作符可以将它们转换成一个单独的字符串。而伴随着PowerShell3.0 的低调问世,有这么一个参数: -Raw,它可以非常高效的得到上面代码同样的结果:

复制代码 代码如下:

$FilePath=”$env:SystemRoot\WindowsUpdate.log”

$ContentsWithLinebreaks=(Get-Content $FilePath) -join “`r`n”

$ContentsWithLinebreaks2=Get-Content $FilePath -Raw

$ContentsWithLinebreaks -eq $ContentsWithLinebreaks2

试着运行上面的代码, $ContentWithLinebreaks 和$ContentWithLinebreaks2可能比较的结果略微有所不同,其不同可能只是换行符而已。

那我们继续辨别真伪,果不其然:

复制代码 代码如下:

PS> $ContentsWithLinebreaks -eq $ContentsWithLinebreaks2.TrimEnd(“`r`n”)

True

© 版权声明

相关文章