1

我正在尝试过滤大型日志文件。有没有办法从日志中读取一行,如果该行包含少于 2 个字符,请使用 power-script 从日志中删除整行

我想出了一种计算文件中字符的方法

  Get-Content ./output.txt | ForEach-Object { $_ | Measure-Object -Character } | Out-File count.txt 

这会计算每一行,然后将计数的字符输出到另一个文件中

我知道如何删除一个空行

  Get-Content .\output.txt | where {$_ -ne ""} | Set-Content out.txt

或包含特定字符或字符串的行

  Get-Content .\in.txt | Where-Object {$_ -notmatch 'STRING'} | Set-Content out.txt

有没有办法管道输出并询问“如果计数 <=1 从日志中删除该行”

基本上

    for each line
      if line is <= 1 delete line
      else leave alone

我希望这对你们有意义,我发现有时很难以对其他人有意义的方式说出我脑海中的东西。任何帮助将非常感激

4

2 回答 2

3

$_ 是一个 [string]/ System.String并且一个字符串具有属性和方法,其中一个告诉我们字符串的长度。

Get-Content .\output.txt | where {$_.Length -gt 1} | Set-Content out.txt
于 2013-09-06T11:48:44.490 回答
1

如果要使用正则表达式删除少于 2 个字符的行,可以执行以下操作:

Get-Content .\in.txt | ? { $_ -match '..' } | Set-Content .\out.txt

该表达式..匹配至少有 2 个字符的字符串(不包括换行符)。

于 2013-09-06T11:54:02.453 回答