如何从Powershell脚本删除文件的每一行

时间:2018-07-12 16:34:42

标签: powershell

我的文件内容为

  

123
  234
  345

我正在使用chmod a+x file_name.sh循环读取文件的每一行。

我有一个类似的要求:我想在./file_name.sh循环中删除文件的每一行。

反正有没有要在foreach循环中删除文件行?

这是我尝试过的:

foreach

我能够清除文件的内容,而且我不知道如何制作大小为零的文件。

1 个答案:

答案 0 :(得分:1)

您要执行的操作称为“截断文件”。 PowerShell为此提供了一个cmdlet:

Clear-Content $source1

如果您想先做一些处理:先做,然后然后清除文件:

Get-Content $source1 | ForEach-Object {
    # do stuff with content of $source1
}

Clear-Content $source1

在某些情况下,如果您要处理内容并使行保持在另一种情况下,则可以收集应保留在变量中的行并将其写回到文件中:

$remains = Get-Content $source1 | ForEach-Object {
    if (<# some condition or other #>) {
        # do stuff with matching lines
    } else {
        # output back to pipeline
        $_
    }
}

# write $remains back to file if it's not empty, otherwise clear file
if ($remains) {
    $remains | Set-Content $source1
} else {
    Clear-Content $source1
}