【问题标题】:Remove content, while keeping first top line powershell删除内容,同时保留第一行 powershell
【发布时间】:2016-10-09 22:09:54
【问题描述】:

我有一个 sample.txt 文件,我想删除其中的内容,除了第一行。

我的 sample.txt 文件如下所示:

1.dslkjfladsdjgmvjfgmldskbm;sldkvmg,;sdlmg;msj,;sdrl
2.dlkjfsadfjmsal;jsalv;dsvmdsfkgmrg,pvtpvhtphb[h.[y
3.fljsafckg,ksd,v;vyklt;vlkbmyulnmktr,ouf,f/.n,
4.dflcajsmglsdv;ks'ítb;pjk.'gpjnuk. uo.hulmk,vgjhumk.'l

我希望输出结果如下所示:

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

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

【问题讨论】:

    标签: powershell


    【解决方案1】:

    来自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
    

    使用Get-Content cmdlet-First 参数(-TotalCount 的别名)与Select-Object -First 的工作方式大致相同,但允许Get-Content 在我们获得所需的行数后立即停止读取文件;传递1,而不是2,仅检索第一行。注意Get-Content 的调用必须用括号括起来,否则Set-Content will complain that the file is already open。或者,您可以先将文件的内容读入变量中...

    $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
    

    【讨论】:

    • 别忘了Get-Content -TotalCount 1
    • @MathiasR.Jessen 好点。我知道有一种方法可以更有效地限制读取的行数,但我正在the wrong place 中寻找它。
    【解决方案2】:

    (gc C:\sample.txt |select -first 1)|out-file C:\sample.txt

    【讨论】:

      【解决方案3】:

      感谢帮助,我终于成功应用了以下代码:

      (Get-Content C:/sample.txt -TotalCount 1) |设置内容 C:\sample.txt

      谢谢 手动

      【讨论】:

      • 我并不是要游说我的答案……但这与我的第一个代码 sn-p 相同。 -FirstGet-Content-TotalCount 参数的别名,在我的回答中有说明。
      猜你喜欢
      • 2019-10-03
      • 2022-12-05
      • 1970-01-01
      • 1970-01-01
      • 2011-08-31
      • 1970-01-01
      • 2015-03-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多