2012-01-20 145 views

Respuesta

6

Suponiendo un archivo llamado "test.txt" ... Para obtener el número de líneas que terminan en Y, se puede hacer esto:

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

Y para obtener el número de líneas que terminan en N, se puede hacer esto:

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

Espero que ayude.

+4

para cualquier Googlers que quieren esta respuesta en una variable aquí es [code] $ a = (Get-Content filename.txt | Select-String "| Y $" | Measure-Object) .count [/ code] –

6

Para obtener tanto los recuentos en una sola línea:

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

Bueno, eso muestra cómo se puede usar '$ matches' :) – stej

+0

+1 ¡Eso es realmente astuto! – Aaron

0

me gusta la respuesta por @manojlds, así que va a lanzar algo similar:

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

(operadores se puede utilizar en arreglos también).

A continuación, puede utilizar de esta manera:

($grouped | ? {$_.Name -eq 'y'}).count 
0
$(foreach ($line in [IO.File]::ReadAllLines(".\test.txt")) { 
    $line.Substring($line.Length - 1) 
}) | Group 
1
$lastchar = @{};get-content $file |% {$lastchar[$_[-1]]++};$lastchar 
2
Get-Content test.txt | Where-Object {$_ -match '[YN]$'} | Group-Object {$_[-1]} -NoElement 
Cuestiones relacionadas