删除内容,同时保留第一个顶线powershell

时间:2016-10-09 22:09:55

标签: powershell

我有一个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}}

有人可以告诉我我错过了什么吗? 感谢

3 个答案:

答案 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

由于 马努