我正在尝试编写一个脚本来搜索文件的内容,并在遇到一组 ASCII 控制字符时插入 CR/LF。
我想替换的字符模式是[ETX][NUL][STX][ETX][SOH]
$filenames = @(Get-Childitem "E:\VendorFiles\*")
$CR = @("[char]3 [char]0 [char]2 [char]3 [char]1")
foreach ($file in $filenames) {$outfile = "$file" + ".txt"
Get-Content $file | Foreach-object {
$_ -replace $CR,"`r`n" `
-replace [char]3,"|" `
-replace [char]1,"{" `
-replace "\\","\\" `
} | Set-Content -encoding "UTF8" $outfile}
这个表达式:
@("[char]3 [char]0 [char]2 [char]3 [char]1")
...创建一个array with a single元素。如果您确实想要 5 个项目的数组,则需要在术语之间使用逗号,但是-replace
反正不支持数组。此外,您的单个元素包含literal您输入的字符;不是你所期望的。
您需要的是创建一个简单的字符串来提供-replace
;当您处理不可打印的字符时,这会涉及更多一些。您的想法是正确的——您只需告诉 PowerShell 使用以下命令在字符串中插入代码表达式即可:$()
每个表达式的符号:
$CR = "$([char]3)$([char]0)$([char]2)$([char]3)$([char]1)"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)