Powershell 的 -replace() 不保留换行符,或者我做错了
Powershell's -replace() does not preserve line breaks, or I'm doing it wrong
我有一个包含几行文本的文本文件,我想插入到另一个文本文件中。
aaa.txt:
aaaaaaaaaa
bbbbbbbbb
ccccccccc
dddddddd
eeeeeeee
bbb.txt:
slkdfjlskdfj dlfjsldkfj slkdfjs
{{replace}}
sdlkfjslkfj sldkfjsld kfjsldk fjsldk f
sldkfjslkfjlskjflskdjf
sdkfjslkjflsklsdjkf
sldfkjslkfjlskfj
但是,当我用 aaa.txt 的内容替换 {{replace}} 时,它会将所有文本放在一行上 - 我想保留 aaa.txt:[=12= 的换行符]
PS> $bbb = cat .\bbb.txt
PS> $bbb -replace('{{replace}}',(cat .\aaa.txt))
slkdfjlskdfj dlfjsldkfj slkdfjs
aaaaaaaaaa bbbbbbbbb ccccccccc dddddddd eeeeeeee
sdlkfjslkfj sldkfjsld kfjsldk fjsldk f
sldkfjslkfjlskjflskdjf
sdkfjslkjflsklsdjkf
sldfkjslkfjlskfj
这似乎有效
($bbb -replace('{{replace}}',$aaa)) -replace " ","`n`r"
-replace
替换单个字符串。 cat .\aaa.txt
returns 一个字符串数组,然后 -replace
必须先将其转换为单个字符串,然后 -replace
才能对其执行某些操作——因此得到了结果。在 PowerShell v3 中,-raw
参数被添加到 Get-Content
来规避这种行为,所以如果你有那个,就这么简单:
$bbb -replace '{{replace}}', (cat -raw .\aaa.txt)
我有一个包含几行文本的文本文件,我想插入到另一个文本文件中。
aaa.txt:
aaaaaaaaaa
bbbbbbbbb
ccccccccc
dddddddd
eeeeeeee
bbb.txt:
slkdfjlskdfj dlfjsldkfj slkdfjs
{{replace}}
sdlkfjslkfj sldkfjsld kfjsldk fjsldk f
sldkfjslkfjlskjflskdjf
sdkfjslkjflsklsdjkf
sldfkjslkfjlskfj
但是,当我用 aaa.txt 的内容替换 {{replace}} 时,它会将所有文本放在一行上 - 我想保留 aaa.txt:[=12= 的换行符]
PS> $bbb = cat .\bbb.txt
PS> $bbb -replace('{{replace}}',(cat .\aaa.txt))
slkdfjlskdfj dlfjsldkfj slkdfjs
aaaaaaaaaa bbbbbbbbb ccccccccc dddddddd eeeeeeee
sdlkfjslkfj sldkfjsld kfjsldk fjsldk f
sldkfjslkfjlskjflskdjf
sdkfjslkjflsklsdjkf
sldfkjslkfjlskfj
这似乎有效
($bbb -replace('{{replace}}',$aaa)) -replace " ","`n`r"
-replace
替换单个字符串。 cat .\aaa.txt
returns 一个字符串数组,然后 -replace
必须先将其转换为单个字符串,然后 -replace
才能对其执行某些操作——因此得到了结果。在 PowerShell v3 中,-raw
参数被添加到 Get-Content
来规避这种行为,所以如果你有那个,就这么简单:
$bbb -replace '{{replace}}', (cat -raw .\aaa.txt)