我有一个这样的文本文件:
文件: sample1.txt
foo: {0}
bar: {1}
Hello {2}
我运行以下命令:
$txt = gc Sample1.txt
$txt -f "bar","foo","world"
我得到了输出:
foo: bar bar: foo Hello world
所有换行都在哪里?
答案 0 :(得分:3)
Get-Content自动将文件按行分成数组。使用-Raw标志将其保持为单个字符串:
$txt = gc Sample1.txt -Raw
$txt -f "bar","foo","world"
如果您遇到PowerShell 2,则Raw参数不存在。您需要使用.NET File API:
$txt = [IO.File]::ReadAllText($(Convert-Path Sample1.txt))
$txt -f "bar","foo","world"
我使用过Convert-Path
因为.NET File API默认会解析相对于进程当前目录的路径,这与路径提供程序中的当前位置不同。
答案 1 :(得分:1)
您还可以使用$ OFS自动变量来控制输出字段分隔符。在您的示例中,输出字段分隔符是一个空格,它是$ OFS的默认值。如果仔细观察输出,就可以看到该空间。
如果您将$ OFS设置为新行,如下所示:
$OFS = "`n"
您的输出应该包含换行符。此变量在某些其他情况下也很有用。
答案 2 :(得分:0)
gc返回一个没有任何返回的字符串数组。您需要使用`n。
指定返回值PS:> "foo: {0}`nbar: {1}`nHello {2}" -f "bar","foo","world"
foo: bar
bar: foo
Hello world