用于比较字符串的PowerShell哈希表或数组

时间:2012-09-28 17:00:48

标签: powershell

我试图从路径名的文本文件中找到分隔在唯一目录中的文件夹名称的频率。因此,使用此数据集,我希望得到以下结果:

  1. 数据

    • C:\ PROJECT_1 \模型\ MapShedMaps \ randomfilename.txt
    • C:\ PROJECT_1 \模型\ MapShedMaps \ randomfilename.txt
    • C:\ PROJECT_1 \模型\ MapShedMaps \ randomfilename.txt
    • C:\ Project_2 \模型\ MapShedMaps \ randomfilename.txt
    • C:\ Project_3 \模型\ MapShedMaps \ randomfilename.txt
    • C:\ Project_3 \模型\ MapShedMaps \ randomfilename.txt
    • C:\ Project_3 \模型\ MapShedMaps \ randomfilename.txt
  2. 结果

    • Project_1 = 1
    • Project_2 = 1
    • Project_3 = 1
    • Models = 3
    • MapShedMaps = 3
  3. 我的第一个想法是使用Get-Content然后使用ForEach-Object将每个单词从路径中分离出来并将它们存储在一个保持计数的哈希表中。为了停止复制,我想到了一个数组或另一个哈希表来存储currnet对象的路径......那一切都崩溃了。我不确定存储路径的“父”成员的最佳方法是什么,以便知道它是否是一个独特的出现。任何有关如何做到这一点的建议都会很棒。

    更新:

    好吧,我想的是哈希表$ SAVE,并计算每个unqiue值,数组$ PREVIOUS是管道中的最后一个对象,数组$ HAVESEEN从一开始就捕获管道。

    因此,如果字符串被破坏,第一个对象将是C,接下来是Project_1,C被移动到$ PREVIOUS和$ HAVESEEN。我将尝试编写这个,我不确定如何在哈希表和数组之间传递所有这些都可以工作。

1 个答案:

答案 0 :(得分:0)

对于初学者,您可以通过对路径进行分组来获得前3个结果项,然后计算其他值:

PS> Get-Content .\file.txt | Group-Object -NoElement

Count Name
----- ----
    3 C:\Project_1\Models\MapShedMaps\randomfilename.txt
    1 C:\Project_2\Models\MapShedMaps\randomfilename.txt
    3 C:\Project_3\Models\MapShedMaps\randomfilename.txt