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

How can I delete a line from a file in Powershell?

网上查了一下,发现有类似的命令

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

所做的只是将行复制到 out.txt 文件。我正在尝试弄清楚如何从 .\aws_hosts 文件中删除一行。

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

[servers]
35.35.35.25

这是我正在尝试做的 linux 版本(它来自 Terraform 教程,他们正在使用 Linux,我只是不知道如何使用电源壳)

sed -i '/^[0-9]/d' aws_hosts

只需使用与 sed 相同的 regex:

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会。