替换powershell中的制表符、新闻空间、空白并计算该文件的SHA1?

替换powershell中的制表符、新闻空间、空白并计算该文件的SHA1?,powershell,powershell-2.0,powershell-3.0,powershell-4.0,Powershell,Powershell 2.0,Powershell 3.0,Powershell 4.0,我正在尝试开发一个Powershell脚本,它应该: 获取文件的内容 删除该文件的空格、换行符和制表符 计算SHA1 这是我的代码,我已经尝试过了,但它不起作用,因为它为带有空格、换行符和制表符的文件提供了SHA1: $File = "C:\MyThirdProject\jpc_flt.txt" $TargetFile = "C:\MyThirdProject\flttest.txt" $lines=(Get-Content $File) $TrimL

我正在尝试开发一个Powershell脚本,它应该:

  • 获取文件的内容
  • 删除该文件的空格、换行符和制表符
  • 计算SHA1
这是我的代码,我已经尝试过了,但它不起作用,因为它为带有空格、换行符和制表符的文件提供了SHA1:

$File = "C:\MyThirdProject\jpc_flt.txt"
$TargetFile = "C:\MyThirdProject\flttest.txt"
$lines=(Get-Content $File)
$TrimLine = foreach ($line in $lines) { $line.Trim(" `t`n`r") } ##Have tried -->$TrimLine=(Get-Content -LiteralPath $File) | foreach{ $_.Trim(" `t`n`r")} | Set-Content $TargetFile
$TrimLine | Out-File $TargetFile
Get-FileHash -Path $TargetFile -Algorithm SHA1 
我愿意使用其他方法或任何其他cmdlet来执行此操作。请帮忙

tl;dr

Set-Content -LiteralPath $TargetFile -NoNewLine -Value (
  (Get-Content -Raw -LiteralPath $File) -replace '\s+'
)

Get-FileHash -LiteralPath $TargetFile -Algorithm SHA1
注意
-Raw
(PSv3+)和
-NoNewLine
(PSv5+)的使用


至于你所尝试的:

$lines=(获取内容$File)

使用将目标文件的内容作为行数组返回。(相比之下,使用
-Raw
将文件作为一个整体读取为一个多行字符串)

$TrimLine |输出文件$TargetFile

默认情况下,每个(字符串化的)输入对象都使用一个-平台适当的-换行符终止。(
-NoNewLine
,相比之下,在任何输入对象之间都没有放置分隔符;对于单行、多行输入字符串,这意味着没有添加尾随的换行符。)

tl;dr

Set-Content -LiteralPath $TargetFile -NoNewLine -Value (
  (Get-Content -Raw -LiteralPath $File) -replace '\s+'
)

Get-FileHash -LiteralPath $TargetFile -Algorithm SHA1
注意
-Raw
(PSv3+)和
-NoNewLine
(PSv5+)的使用


至于你所尝试的:

$lines=(获取内容$File)

使用将目标文件的内容作为行数组返回。(相比之下,使用
-Raw
将文件作为一个整体读取为一个多行字符串)

$TrimLine |输出文件$TargetFile


默认情况下,每个(字符串化的)输入对象都使用一个-平台适当的-换行符终止。(
-NoNewLine
,相比之下,在任何输入对象之间都没有分隔符;对于单行、多行输入字符串,这意味着没有附加尾随的换行符。)

您只需执行
$newFile=(Get Content$File-Raw)-替换“\s+”
.Trim()
方法将删除字符串开头和结尾的内容,但不会删除中间的内容。这是你的意图吗?如果你想删除所有空白,你可以按照圣地亚哥的建议去做。如果你想删除所有额外的空白,你可以做
$newFile=(Get Content$File-Raw)-替换“\s{2,}”
请允许我给你给新来者一个标准的建议:如果你有答案,你将通过向未来的读者展示解决问题的方法来帮助他们。要接受答案,请单击大标题✓ 答案左侧大数字下方的符号(您将获得2点声誉积分)。如果你至少有15个声望点,你也可以投票给其他有用的答案(也可以选择被接受的答案)。如果您的问题尚未解决,请提供反馈,或者,如果您自己找到了解决方案,您只需执行
$newFile=(获取内容$File-Raw)-替换“\s+”
.Trim()
方法将删除字符串开头和结尾的内容,而不是中间的内容。这是你的意图吗?如果你想删除所有空白,你可以按照圣地亚哥的建议去做。如果你想删除所有额外的空白,你可以做
$newFile=(Get Content$File-Raw)-替换“\s{2,}”
请允许我给你给新来者一个标准的建议:如果你有答案,你将通过向未来的读者展示解决问题的方法来帮助他们。要接受答案,请单击大标题✓ 答案左侧大数字下方的符号(您将获得2点声誉积分)。如果你至少有15个声望点,你也可以投票给其他有用的答案(也可以选择被接受的答案)。如果您的问题尚未解决,请提供反馈,或者,如果您自己找到了解决方案。