2012-01-20 4 views

ответ

6

Предполагая, что файл с именем «test.txt» ... Для того, чтобы получить количество строк, заканчивающихся в Y, вы можете сделать это:

get-content test.txt | select-string Y$ | measure-object -line 

И получить количество строк, оканчивающихся на N, то может сделать это:

get-content test.txt | select-string N$ | measure-object -line 

Надеюсь, что это поможет.

+4

для любых Googlers, которые хотят этот ответ в переменную, то здесь [код] $ а = (Get-Content filename.txt | Select-String "| Y $" | Measure-Object) .count [/ code] –

6

Чтобы получить как отсчеты в одной строке:

gc .\test.txt | %{ if($_ -match "Y$|N$"){ $matches[0]} } | group 
+0

Приятно, что показывает, как использовать '$ matches' :) – stej

+0

+1 Это действительно пятно! – Aaron

0

Мне нравится ответ на @manojlds, так что я брошу что-то подобное:

$grouped = (gc .\test.txt) -replace ".*(y|n)$",'$1' | group 

(операторы могут быть использованы на массивы).

Затем вы можете использовать его как это:

($grouped | ? {$_.Name -eq 'y'}).count 
0
$(foreach ($line in [IO.File]::ReadAllLines(".\test.txt")) { 
    $line.Substring($line.Length - 1) 
}) | Group 
2
Get-Content test.txt | Where-Object {$_ -match '[YN]$'} | Group-Object {$_[-1]} -NoElement 
Смежные вопросы