使用PowerShell,如何通过行号从文本文件中删除行?

时间:2010-10-18 22:42:16

标签: powershell

在PowerShell中,我想使用行号从10行文本文件中删除第5行,这是怎么做到的?

2 个答案:

答案 0 :(得分:3)

不像我想的那样干净,但有诀窍:

$content = Get-Content foo.txt
$content | Foreach {$n=1}{if ($n++ -ne 5) {$_}} > foo.txt

如果安装了PSCX,则可以使用Skip-Object cmdlet使其更好一些:

$content = Get-Content foo.txt
$content | Skip -Index 4 > foo.txt

请注意,-Index参数为0,这就是我使用4而不是5的原因。

答案 1 :(得分:1)

我就是这样做的:

(cat SomeFile.txt) -replace (cat SomeFile.txt)[4],"" | sc SomeFile.txt -Force

或稍微可读的形式:

$LineNumber = 5
$Contents = Get-Content Somefile.txt
$Contents -replace $Contents[$LineNumber -1],"" | Set-Content Somefile.txt

虽然我同意基思的观点。如果安装了PSCX模块,Skip-Object非常有用。