2014-10-31 58 views
2

如何获取空行之前的行数。例如:在PowerShell中的空白行之前计算行号#

 
This is a paragraph 
This is a paragraph 
This is a paragraph 

This is a paragraph 
This is a paragraph 
This is a paragraph 
This is a paragraph 

第一组计数3行,第二组计数4行。 我已经使用Get-Content .\testing.txt | Measure-Object -line它返回的行数,但这不是我想要的总数。

回答

2

Get-Content返回一个数组,因此任何回车或换行都会丢失。假设没有空格,则返回以下内容3.相应地调整以修剪“空格”(如果它们不是字符)。 $a = Get-Content .\testing.txt ; [array]::IndexOf($a,'')

编辑:以下循环内容并输出任何空白行之前的行数。空行或任意数量空格的行被认为是空白的。要将空格视为不空行,请删除“.trimend”。

$a = Get-Content C:\powershell\tmp.txt ; $i = 0; 
while([array]::IndexOf($a.trimend(' '),'', $i) -gt 0) 
{ 
    $j = [array]::IndexOf($a.trimend(' '),'', $i); $j - $i; $i = $j + 1 ; 
} 
+0

谢谢@Ottak。这可以得到第一组的总数。但是如何获得第二组的总数呢? – 2014-11-01 22:05:35

+0

@JasonTang请参阅我添加到原始答案的附加编辑。它将适用于任何长度的文件。在包含连续空行集的20套文件上进行测试。 – Ottak 2014-11-01 23:03:59

+0

谢谢!由于场景发生变化,我采用了不同的方法,但您的解决方案回答了我最初的问题。 :) – 2014-11-06 03:25:10

1

这将逐步通过文件的行来找到第一个空白。

$lines = Get-Content C:\Dev\PS\3.txt 
for ($i = 0; $i -le $lines.Length; $i++) { 
    if ($lines[$i].Length -eq 0) { 
     break 
    } 
} 
echo $i 
+0

谢谢@JasonW。任何想法如何获得两组总数? – 2014-11-01 22:06:28

+0

你是指两套?在同一个文件中,所以你想在同一个文件的不同行中输出3和4? – 2014-11-02 01:55:24