求PowerShell命令:统计PDF文件中两个指定单词间的字符数
统计文件中指定两个单词间字符数的PowerShell实现
以下是修改后的PowerShell脚本,可实现遍历文件并统计指定两个单词之间的字符数,同时保留原脚本的总字符、单词、行数统计功能:
首先设置要匹配的起始和结束单词:
$startWord = "你的起始单词" $endWord = "你的结束单词"
完整脚本:
Get-ChildItem -Include *.* -Recurse | ForEach-Object { # 一次性读取文件全部内容,支持跨多行匹配 $content = Get-Content $_ -Raw # 用正则匹配起始单词到结束单词之间的内容(不含单词本身) $match = [regex]::Match($content, "(?<=$startWord)(.*?)(?=$endWord)") # 匹配成功则取字符数,否则返回0 $betweenCharCount = if ($match.Success) { $match.Value.Length } else { 0 } $_ | Select-Object Name, @{n="指定单词间字符数";e={ $betweenCharCount }}, @{n="总字符数";e={ ($content | Measure-Object -Character).Characters }}, @{n="单词数";e={ ($content | Measure-Object -Word).Words }}, @{n="行数";e={ ($content | Measure-Object -Line).Lines }} } | Format-Table -AutoSize
关键说明
Get-Content -Raw:一次性读取整个文件内容,避免逐行处理导致跨多行的单词匹配失败。- 正则表达式
(?<=$startWord)(.*?)(?=$endWord):使用正向零宽断言,精准匹配两个单词之间的内容,且不会把起始/结束单词本身计入字符数;.*?是非贪婪匹配,确保取第一个起始单词到第一个结束单词之间的内容。 - 如果需要统计所有出现的单词对之间的总字符数,可以把匹配逻辑改成:
$matches = [regex]::Matches($content, "(?<=$startWord)(.*?)(?=$endWord)") $betweenCharCount = ($matches | ForEach-Object { $_.Value.Length } | Measure-Object -Sum).Sum
内容的提问来源于stack exchange,提问作者Saurabh1232022
相关产品推荐
相关产品推荐

