替换powershell中的制表符、新闻空间、空白并计算该文件的SHA1?
我正在尝试开发一个Powershell脚本,它应该:替换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
- 获取文件的内容
- 删除该文件的空格、换行符和制表符
- 计算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个声望点,你也可以投票给其他有用的答案(也可以选择被接受的答案)。如果您的问题尚未解决,请提供反馈,或者,如果您自己找到了解决方案。