格式运算符删除换行符
Format operator removes line breaks
我有一个这样的文本文件:
文件:sample1.txt
foo: {0}
bar: {1}
Hello {2}
我运行以下命令:
$txt = gc Sample1.txt
$txt -f "bar","foo","world"
我得到了输出:
foo: bar bar: foo Hello world
所有换行符都去哪儿了?
gc returns 没有任何 returns 的字符串数组。您需要指定 return 和 `n .
PS:> "foo: {0}`nbar: {1}`nHello {2}" -f "bar","foo","world"
foo: bar
bar: foo
Hello world
Get-Content 自动按行将文件分成数组。使用 -Raw 标志将其保留为单个字符串:
$txt = gc Sample1.txt -Raw
$txt -f "bar","foo","world"
如果您卡在 PowerShell 2 上,则 Raw 参数不存在。您需要使用 .NET 文件 API:
$txt = [IO.File]::ReadAllText($(Convert-Path Sample1.txt))
$txt -f "bar","foo","world"
我使用了 Convert-Path
,因为 .NET 文件 API 将默认解析相对于进程当前目录的路径,这与路径提供程序中的当前位置不同。
您还可以使用 $OFS 自动变量来控制输出字段分隔符。在您的示例中,输出字段分隔符是 space,这是 $OFS 的默认值。如果仔细查看输出,您可以看到 space。
如果设置$OFS为换行,如下:
$OFS = "`n"
你的输出应该有换行符。此变量在其他一些情况下也很有用。
我有一个这样的文本文件:
文件:sample1.txt
foo: {0}
bar: {1}
Hello {2}
我运行以下命令:
$txt = gc Sample1.txt
$txt -f "bar","foo","world"
我得到了输出:
foo: bar bar: foo Hello world
所有换行符都去哪儿了?
gc returns 没有任何 returns 的字符串数组。您需要指定 return 和 `n .
PS:> "foo: {0}`nbar: {1}`nHello {2}" -f "bar","foo","world"
foo: bar
bar: foo
Hello world
Get-Content 自动按行将文件分成数组。使用 -Raw 标志将其保留为单个字符串:
$txt = gc Sample1.txt -Raw
$txt -f "bar","foo","world"
如果您卡在 PowerShell 2 上,则 Raw 参数不存在。您需要使用 .NET 文件 API:
$txt = [IO.File]::ReadAllText($(Convert-Path Sample1.txt))
$txt -f "bar","foo","world"
我使用了 Convert-Path
,因为 .NET 文件 API 将默认解析相对于进程当前目录的路径,这与路径提供程序中的当前位置不同。
您还可以使用 $OFS 自动变量来控制输出字段分隔符。在您的示例中,输出字段分隔符是 space,这是 $OFS 的默认值。如果仔细查看输出,您可以看到 space。
如果设置$OFS为换行,如下:
$OFS = "`n"
你的输出应该有换行符。此变量在其他一些情况下也很有用。