gpt4 book ai didi

powershell - Powershell此处字符串换行符不适用于输出文件

转载 作者:行者123 更新时间:2023-12-03 00:27:24 24 4
gpt4 key购买 nike

我有数百行文本在此处以字符串形式定义为here-string:

$outputText = @"
Line1
Line2
Line3
And so on...
"@

如果我在屏幕上打印 $outputText,则显示正确:
PS > $outputText
Line1
Line2
Line3
And so on...
PS >

但是,当我尝试将其输出到文件中时,总是丢失换行符,并且文件看起来像这样:
Line1Line2Line3And so on...

我尝试遵循:
$outputText | Set-Content file.txt
Add-Content file.txt -Value $outputText
Out-File -InputObject $outputText file.txt

如果我在每行的末尾添加 'r'n(带有适当的刻度),则可见输出在每行之间都有额外的换行符,但输出文件正确显示了每行。但是,在几百行中的每行之后放置回车和换行符并不是一个真正的选择。

我如何能够更容易地在文件中正确地输出换行符,或者如何以其他方式定义多行字符串,以便换行符在没有复杂的转义符等的情况下可以工作?

最佳答案

此处的字符串将文本放在字符串中,这些行以LF / 0xA分隔。

$outputText = @"
Line1
Line2
Line3
And so on...
"@
$outputText | Format-Hex
           00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

00000000 4C 69 6E 65 31 0A 4C 69 6E 65 32 0A 4C 69 6E 65 Line1.Line2.Line
00000010 33 0A 41 6E 64 20 73 6F 20 6F 6E 2E 2E 2E 0D 0A 3.And so on.....

相反,分割字符串:
$outputText = @"
Line1
Line2
Line3
And so on...
"@ -split '\n' # or -split "`n"

$outputText | Set-Content file1.txt
Out-File -InputObject $outputText file2.txt

1..2|%{(Get-Content ".\file$_.txt" -raw) | Format-Hex}
           00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

00000000 4C 69 6E 65 31 0D 0A 4C 69 6E 65 32 0D 0A 4C 69 Line1..Line2..Li
00000010 6E 65 33 0D 0A 41 6E 64 20 73 6F 20 6F 6E 2E 2E ne3..And so on..
00000020 2E 0D 0A ...


00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

00000000 4C 69 6E 65 31 0D 0A 4C 69 6E 65 32 0D 0A 4C 69 Line1..Line2..Li
00000010 6E 65 33 0D 0A 41 6E 64 20 73 6F 20 6F 6E 2E 2E ne3..And so on..
00000020 2E 0D 0A ...

其他可能影响输出的因素(不在此处),
  • automatic_variable $OFS
  • $OutputEncoding
  • [System.Environment]::NewLine

  • > $OutputEncoding


    IsSingleByte : True
    BodyName : us-ascii
    EncodingName : US-ASCII
    HeaderName : us-ascii
    WebName : us-ascii
    WindowsCodePage : 1252
    IsBrowserDisplay : False
    IsBrowserSave : False
    IsMailNewsDisplay : True
    IsMailNewsSave : True
    EncoderFallback : System.Text.EncoderReplacementFallback
    DecoderFallback : System.Text.DecoderReplacementFallback
    IsReadOnly : True
    CodePage : 20127

    PS :在VSCode中运行第二个脚本返回0D / 0D / 0A序列,必须使用 -split '\r\n'

    关于powershell - Powershell此处字符串换行符不适用于输出文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54129708/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com