2017-10-14 116 views
2
(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 

我正在使用以下命令將字段分隔符替換爲〜在文本文件中。 這個命令運行成功,但是當我在記事本++中打開輸出文件。我只是看到平原\ 034。用powershell中的字段分隔符( 034)替換字符

例:

Company_Identifier \ 034Primary_Transaction_ID

但輸出應該像下面

enter image description here

請幫助

+1

嘗試'-replace 「〜」,[字符] 0x1C' –

+0

神奇......它的工作.. – TomG

+0

我是新來powershell..Can你請提供一些鏈接,我可以更好地瞭解PowerShell中的控制字符。在unix中,我們使用\ 034,但它在PowerShell中不起作用 – TomG

回答

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) 

`r(回車)PowerShell中(ISE)集成腳本環境主機被忽略應用程序控制臺,它在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

的Windows PowerShell當前沒有(見下文)有逃脫字符文字像\034序列。

相反,你可以做什麼數值ASCII或Unicode值轉換爲[char]的子表達式:

"Company_Identifier$([char]0x1C)Primary_Transaction_ID" 

同樣,也可以提供同樣的鑄造表達最右邊的操作數-replace,它「會被轉換爲單字符的字符串:

... |Foreach-Object {$_ -replace "~", [char]0x1C} |... 

PowerShell的6.0(目前處於測試)推出對Unicode碼點文字轉義序列:

... |Foreach-Object {$_ -replace "~", "`u{1C}"} |... 

unicode literals in PowerShell 6.0.0-beta.7