代码之家  ›  专栏  ›  技术社区  ›  MP32

如何从Powershell中的文件中删除一行?

  •  1
  • MP32  · 技术社区  · 2 年前

    我在网上找到了一个类似的命令

    Get-Content .\aws_hosts | Where-Object {$_ -notmatch '([^\.0-9])'} | Set-Content out.txt
    

    所做的只是把这条线复制到一个输出端。txt文件。我想知道如何从列表中删除一行。\aws_托管文件。

    在我的aws_hosts文件中,我想特别删除第2行的IP地址,而不是[servers]行

    [servers]
    35.35.35.25
    

    以下是我尝试做的linux版本(来自Terraform教程,他们正在使用linux,我就是不知道如何使用Powershell)

    sed -i '/^[0-9]/d' aws_hosts
    
    1 回复  |  直到 2 年前
        1
  •  1
  •   mklement0    2 年前

    用同样的 regex 和你一样 sed :

    Get-Content .\aws_hosts |
      Where-Object { $_ -notmatch '^[0-9]' } | 
        Set-Content out.txt
    

    对于较小的文件(大多数文本文件都是),可以简化为:

    @(Get-Content .\aws_hosts) -notmatch '^[0-9]' | Set-Content out.txt
    

    这种简化的方法——由于读取整个输入文件 全部 提前-还允许您将结果写回同一个文件,如下所示: sed -i