gpt4 book ai didi

powershell - 使用 powershell 删除文件中的 NUL 字符

转载 作者:行者123 更新时间:2023-12-03 00:06:03 27 4
gpt4 key购买 nike

我是 powershell 的新手,我正在尝试删除文件中的 NUL 字符。下面是文件截图

原始文件快照

Original file snaphsot

我尝试使用下面的代码删除第 2 行中的 NUL 字符

$filepath=<File name>
[STRING]$test = [io.file]::ReadAllText($filepath)
$test = $test -replace "\x00","`n"
$test = $test -replace "`n"," "
echo $test
$test | out-file ./testoutput.txt

但是代码将所有记录都变成了单个记录。

我也试过下面的代码
$filepath=<filename>
$tempath=<temp file name>
Move-Item -Path $filepath -Destination $temppath
ForEach ($file in (Get-Content $temppath)) {
[STRING]$test = $file
$test = $test -replace "`0",""
$test = $test -replace "`r`n",""
echo $test
$test | out-file $filepath -Append
}

删除了 NUL 字符,但是第二行看起来像多行

转换后的文件图像

Converted file image

我的要求是删除 NUL 字符并将第二行作为单行而不是多行。感谢对此的任何帮助

最佳答案

很难说你想要完成什么。看起来您的文件中可能有 NUL 字符。

如果要删除所有 NUL 字符,可以执行以下操作:

(Get-Content $filepath) -replace '\0' | Set-Content $temppath

如果要删除仅包含 NULCRLF 的行,可以执行以下操作:
(Get-Content $filepath) -notmatch '^\0$' | Set-Content $temppath

如果要删除所有 NUL 字符和仅包含 CRLF 或 NULCRLF 的行,可以执行以下操作:
(Get-Content $filepath) -replace '\0' -ne '' | Set-Content $temppath

如果要删除所有 NUL 字符并连接不以 | 结尾的行,您可以执行以下操作:
$output = [System.Text.StringBuilder]::new()
(Get-Content $filepath) -replace "\0" | Foreach-Object {
if ($_ -match '\|$') {
[void]$output.AppendLine($_)
} else {
[void]$output.Append($_)
}
}
$output.ToString() -replace '\r\n$' | Set-Content $temppath

关于powershell - 使用 powershell 删除文件中的 NUL 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60786407/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com