Powershell 如何删除以“开始”开头的行#&引用;在CSV文件中

Powershell 如何删除以“开始”开头的行#&引用;在CSV文件中,powershell,csv,search,Powershell,Csv,Search,每天早上我都会有一份报告,生成一个CSV文件,其中包含计算机的名称,以及整个文件中的附加注释。注释的每一行都以“#”开头,注释分散在整个文档中,而不仅仅是在文档的开头,所以我不能只看前几行 有没有办法搜索CSV文件并删除以“#”开头的行?或者有没有办法选择不以“#”开头的行,并将其保存为新文件?是的,绝对有 您可以逐行读取该文件,只需过滤掉以开头的任何内容: 您提到您还希望过滤掉空行。这将做到: Get-Content "inputfile.csv" | Where-Object { $_

每天早上我都会有一份报告,生成一个CSV文件,其中包含计算机的名称,以及整个文件中的附加注释。注释的每一行都以“#”开头,注释分散在整个文档中,而不仅仅是在文档的开头,所以我不能只看前几行

有没有办法搜索CSV文件并删除以“#”开头的行?或者有没有办法选择不以“#”开头的行,并将其保存为新文件?

是的,绝对有

您可以逐行读取该文件,只需过滤掉以
开头的任何内容:

您提到您还希望过滤掉空行。这将做到:

Get-Content "inputfile.csv" |
  Where-Object { $_ -notmatch '(^\s*$)|(^\s*#)' } |
  Set-Content "outputfile.csv"

如果在
#
之前可能有一个或多个空格或制表符,则可以使用
{$\u-notmatch'^\s*#'}
。的可能重复
foreach ($thing in $csv) {
    if ($thing.StartsWith("#")) {
        continue
     } else {
        #insert what you want to do here
     }
}
Get-Content "inputfile.csv" |
  Where-Object { $_ -notmatch '(^\s*$)|(^\s*#)' } |
  Set-Content "outputfile.csv"