如何从 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
会。
网上查了一下,发现有类似的命令
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
会。