我有一个sample.txt文件,我想删除内容,但第一行除外。
我的sample.txt文件如下所示:
1.dslkjfladsdjgmvjfgmldskbm;sldkvmg,;sdlmg;msj,;sdrl
我希望输出结果如下所示:
Clear-Content C:\sample.txt | where { $_.length -gt 2}| Set-Content C:\sample.txt
Clear-Content C:\sample.txt | Select -first 2 | Set-Content C:\sample.txt
我尝试过这些命令,但输出会清除整个文件。
{{1}}
有人可以告诉我我错过了什么吗? 感谢
答案 0 :(得分:4)
来自the documentation for the Clear-Content
cmdlet:
Clear-Content cmdlet删除项目的内容,例如从文件中删除文本,但不删除项目。结果,该项目存在,但它是空的。
使用Clear-Content
,您将删除sample.txt
的内容而不阅读它。相反,您想使用Get-Content
:
(Get-Content C:\sample.txt -First 1) | Set-Content C:\sample.txt
使用-First
的{{1}}参数(-TotalCount
的别名)与Select-Object -First
的工作方式大致相同,但允许Get-Content
停止将文件读取为我们拥有所需的线路数量;传递1
,而不是2
,仅检索第一行。请注意,Get-Content
的调用必须用括号括起来Get-Content
cmdlet。或者,您可以先将文件内容读入变量...
$firstLine = Get-Content C:\sample.txt -First 1
$firstLine | Set-Content C:\sample.txt
...或者首先将过滤后的文本输出到另一个文件,然后覆盖原始文件,进行“安全覆盖”......
Get-Content C:\sample.txt -First 1 | Set-Content C:\sample.txt.tmp
Move-Item C:\sample.txt.tmp C:\sample.txt -Force
答案 1 :(得分:0)
(gc C:\ sample.txt | select -first 1)| out-file C:\ sample.txt
答案 2 :(得分:0)
感谢您的帮助,我终于成功应用了以下代码:
(Get-Content C:/sample.txt -TotalCount 1) | Set-Content C:\sample.txt
由于 马努