(Get-Content C:\Users\georgeji\Desktop\KAI\KAI_Block_2\Temp\KAI_ORDER_DATARECON3.NONPUBLISH) | Foreach-Object {$_ -replace "~", "\034"} | Set-Content C:\Users\georgeji\Desktop\KAI\KAI_Block_2\Temp\KAI_ORDER_DATARECON4.NONPUBLISH
我使用以下命令在Field Seperator中替换〜文本文件中的〜。 这个命令运行成功,但是当我在notepadd ++中打开输出文件时。我只是看到了普通的\ 034。
例如:
Company_Identifier \ 034Primary_Transaction_ID
但输出应该如下
请帮助
答案 0 :(得分:1)
使用
-replace "~", [char]0x1C
如果您想在较长的字符串中使用它,可以使用
-replace "~", "more $([char]0x1C) text"
这里的要点是,在Powershell中,您不能使用八进制字符表示(也不是\xYY
或\uXXXX
),因为它支持的转义序列仅限于(参见source )
`0 Null `a Alert bell/beep `b Backspace `f Form feed (use with printer output) `n New line `r Carriage return `r`n Carriage return + New line `t Horizontal tab `v Vertical tab (use with printer output)
PowerShell(ISE)集成脚本环境主机应用程序控制台中忽略
`r
(回车),它在PowerShell控制台会话中有效。使用Escape字符以避免特殊含义。
`` To avoid using a Grave-accent as the escape character `# To avoid using # to create a comment `' To avoid using ' to delimit a string `" To avoid using " to delimit a string
答案 1 :(得分:1)
Windows PowerShell目前没有(见下文)具有\034
等字符文字的转义序列。
相反,你可以做的是在子表达式中将数字ascii或unicode值转换为[char]
:
"Company_Identifier$([char]0x1C)Primary_Transaction_ID"
同样,您可以向-replace
提供与最右侧操作数相同的强制转换表达式,它将转换为单字符字符串:
... |Foreach-Object {$_ -replace "~", [char]0x1C} |...
PowerShell 6.0(目前处于测试阶段)为unicode代码点文字引入了`u{}
转义序列:
... |Foreach-Object {$_ -replace "~", "`u{1C}"} |...