【问题标题】:How to count number of ids in a file如何计算文件中的ID数
【发布时间】:2016-09-05 01:30:36
【问题描述】:

所以我有一个包含数十万行的巨大文件。我想知道它包含多少个不同的会话或 ID。我真的以为这不会那么难做,但我找不到方法。

会话如下所示:

"session":"1425654508277"

所以该会话将有几千行,然后它会切换,不一定会增加一,我不知道是否有模式。所以我只想知道文档中出现了多少会话,彼此之间有多少不同(它们应该是连续的,但这不是我注意到的要求)。

有没有简单的方法来做到这一点?只有我发现甚至很接近的东西是 excel 宏和脚本,这让我认为我没有问正确的问题。我还发现了这个:Notepad++ incrementally replace,但对我来说没有帮助。

提前致谢。

【问题讨论】:

  • 这和 JSON 有什么关系?
  • 不仅仅是cat data | uniq | wc?
  • 通过正则表达式搜索使用建议重复项上的答案。
  • 嗯,它是一个json文件,键值类型为表达式。以便。也许使用 json 的人知道这样做? @torazaburo老实说,我并没有想到用unix命令来做,但我从来没有为一个非常大的文件做过,它可以毫无问题地做到吗?根据我的经验,这有点大。

标签: json regex notepad++


【解决方案1】:

添加到我自己的问题中,如果您设法在 Excel 中按列分隔字符串,Excel 有一个过滤选项,它会自动为您提供不同的值来过滤列。

这意味着,应用于我的案例,如果我获得键值(“session”:“idSession”,每行中的 100000 个值),所有这些都在一列中,过滤,手动计数,我得到不同值的数量。

没有尝试 wc/unix 选项,因为我在尝试应用其他方法时发现了这个

【讨论】:

    【解决方案2】:

    您无法使用notepad++ 实现此目的,但您可以使用linux 命令shell 命令,即:

    cat sessions.txt | uniq | wc
    

    【讨论】:

      【解决方案3】:

      根据您的个人资料,您知道 JavaScript,因此您可以使用它:

      1. 加载文件。
      2. 寻找session。 (如果是 JSON,则可以像 myJson['session'] 一样简单。)
      3. 键入会话值,添加到地图,例如myCounts[sessionValue] = doesNotMatter
      4. 计算地图中键的数量。

      还有更简单的方法,比如 torazaburo 的建议使用cat data | uniq | wc,但听起来不像你想学习 Unix,所以你不妨练习一下你的 JavaScript(我在学习编程语言时自己这样做:使用它一切)。

      【讨论】:

        【解决方案4】:

        考虑使用 jq。您可以使用[.session] 提取会话,然后应用unique,然后应用length

        https://stedolan.github.io/jq/manual/

        我不是jq专家,没有测试过这个,但似乎程序

        unique_by(.message) | length
        

        可能会给你你想要的。

        【讨论】:

        • 这看起来不错,但我不知道如何使用该工具。他们确实有一个在线的,我正在使用,但不知道你告诉我做什么的语法。任何进一步的帮助都会很棒,我会尝试一下,看看我是否得到它。
        猜你喜欢
        • 1970-01-01
        • 2014-11-09
        • 1970-01-01
        • 2013-09-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多