Powershell' sreplace()不会保留换行符,或者我做错了

时间:2015-02-20 18:58:38

标签: powershell text replace

我有一个包含一些文本行的文本文件,我想插入另一个文本文件。

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中的换行符:

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

2 个答案:

答案 0 :(得分:4)

-replace替换单个字符串。 cat .\aaa.txt返回一个字符串数组,然后-replace必须转换为单个字符串,然后-replace可以对其执行某些操作 - 因此您的结果。在PowerShell v3中,-raw参数已添加到Get-Content以规避此行为,因此,如果您有这样的行为,则它就像这样简单:

$bbb -replace '{{replace}}', (cat -raw .\aaa.txt)

答案 1 :(得分:0)

这似乎有效

($bbb -replace('{{replace}}',$aaa)) -replace " ","`n`r"