统计文本文件信息(Calculating Text File Statistics)

 如下翻译来自微软TechNet脚本中心: http://www.microsoft.com/technet/scriptcenter/resources/pstips/aug07/pstip0824.mspx

译者: Edengundam(马涛)
 
统计文本文件信息(Calculating Text File Statistics)
 
如果你看了 ‘嘿, 脚本专家’ 的 归档 (大多数人认为这是出版在TechNet上不错,且每天更新的专栏) 你将会突然意识到:人们经常一遍一遍的统计文本文件的信息. 这类统计大都是, 我的文件有几行, 我的文件有多少个单词, 我的文件有多少个字符, 等等. 出于各种各样的原因, 只是简单的有一个文本是远远不够的; 人们需要知道文本文件的所有信息.
计算文本文件的统计信息在VBScript中相对比较容易(提示下, 虽然有点古怪, 但还算是容易). 这导致了一个明显的问题: 使用Windows PowerShell计算文本文件的统计信息有多简单? 让我们自己调查下吧.
开始前, 假设我们有一个名叫C:/Scripts/Alice.txt的文本文件, 文件中包含了如下的信息:
Curiouser and curiouser!' cried Alice (she was so much surprised, that for the moment 
she quite forgot how to speak good English); 'now I'm opening out like the largest 
telescope that ever was! Good-bye, feet!' (for when she looked down at her feet, they 
seemed to be almost out of sight, they were getting so far off). 'Oh, my poor little 
feet, I wonder who will put on your shoes and stockings for you now, dears? I'm sure 
_I_ shan't be able! I shall be a great deal too far off to trouble myself about you: 
you must manage the best way you can; --but I must be kind to them,' thought Alice, 
'or perhaps they won't walk the way I want to go! Let me see: I'll give them a new 
pair of boots every Christmas.'
我们很想知道文件中有多少个单词, 文件包含几行, 以及文件中的字符数量. 要做到这个有多难? 事实证明, 根本就不难:
Get-Content c:/scripts/alice.txt | Measure-Object –word –line -character
确实, 我们没有遗漏任何内容: 这么一行简单的代码返回了关于文本的所有有用信息. 为了取得这些信息我们简单的使用 Get-Content cmdlet从文件C:/Scripts/Alice.txt中读取所有内容. 然而, 我们选择将结果, 通过管道传递给 Measure-Object cmdlet, 而不是将这些信息显示在屏幕上(Get-Content的默认行为). 正如同名字所暗示的一样, Measure-Object被设计为“测量”属性值; 例如, 对于一组数值, Measure-Object能够计算这些数字的和以及平均值, 也能报告这组数字中的最大值和最小值. (你说你想看看它们的例子? 没问题;   这篇文章 就是你所需要的. )
当然, 我们没有将一组数值传递给Measure-Object. 取而代之的是, 我们传递了一个文本文件的内容; 这也是为什么我们是用了形参 –word (显示文件中的单词数); -line (显示文件中的行数); 以及 –character (显示文件中的字符串). 作为结果, 这里给出Measure-Object的输出:
Lines                         Words                    Characters Property
-----                         -----                    ---------- --------
1                           137                           708
非常棒吧, 是不是?
这里还有一个你可能会发现非常有用的参数: -ignorewhitespace. 默认情况下, Measure-Object把文件中的空白字符也算在字符数中. 某些时候这是我们希望的; 然而, 其他一些时候, 你希望能够忽略空白字符. 你想忽略空白字符嘛? 很好; 只需要在你的命令最后附加形参 –ignorewhitespace, 类似这样:
Get-Content c:/scripts/alice.txt | Measure-Object –word –line –character -ignorewhitespace
现在看看文件中被找到的字符数量:
Lines                         Words                    Characters Property
-----                         -----                    ---------- --------
     1                           137                           572
明显不一样了.
偶尔, 你不仅仅局限于统计文本文件的信息; Measure-Object能够对变量进行一样的操作. 例如, 假设我们将一些文本信息赋值给名叫$a的变量:
$a = "This is a two-line value `n stored in a variable."
$a中包含了多少个单词, 多少行, 多少个字符? 好的, 让我们试试下面的命令来自己亲自看看:
$a | Measure-Object –word –line -character
根据Measure-Object计算, 结果如下:
Lines                         Words                    Characters Property
-----                         -----                    ---------- --------
    2                             9                            48
人们认为统计工作很难. 它们并不难, 至少当你有了Windows PowerShell它不难.
 

你可能感兴趣的:(windows,File,VBScript,character,powershell,statistics)