Unix 列出文件中多次出现的所有字符串

Unix 列出文件中多次出现的所有字符串,unix,grep,Unix,Grep,我有一个大约70GB的非常大的文件,我想列出在整个文件中多次出现的所有字符串 当我指定在文件中搜索哪个字符串时,我可以列出所有匹配项,但我想列出所有出现多次的字符串 例如,假设我的文件如下所示: +------+------------------------------------------------------------------+----------------------------------+--+ | HHID | V

我有一个大约70GB的非常大的文件,我想列出在整个文件中多次出现的所有字符串

当我指定在文件中搜索哪个字符串时,我可以列出所有匹配项,但我想列出所有出现多次的字符串

例如,假设我的文件如下所示:

+------+------------------------------------------------------------------+----------------------------------+--+
| HHID |                             VAL_CD64                             |             VAL_CD32             |  |
+------+------------------------------------------------------------------+----------------------------------+--+
|  203 | 8c5bfd9b6755ffcdb85dc52a701120e0876640b69b2df0a314dc9e7c2f8f58a5 | 373aeda34c0b4ab91a02ecf55af58e15 |  |
|  7AB | f6c581becbac4ec1291dc4b9ce566334b1cb2c85e234e489e7fd5e1393bd8751 | 2c4f97a04f02db5a36a85f48dab39b5b |  |
|  7AB | abad845107a699f5f99575f8ed43e0440d87a8fc7229c1a1db67793561f0f1c3 | 2111293e946703652070968b224875c9 |  |
|  348 | 25c7cf022e6651394fa5876814a05b8e593d8c7f29846117b8718c3dd951e496 | 5c80a555fcda02d028fc60afa29c4a40 |  |
|  348 | 67d9c0a4bb98900809bcfab1f50bef72b30886a7b48ff0e9eccf951ef06542f9 | 6c10cd11b805fa57d2ca36df91654576 |  |
|  348 | 05f1e412e7765c4b54a9acfd70741af545564f6fdfe48b073bfd3114640f5e37 | 6040b29107adf1a41c4f5964e0ff6dcb |  |
|  4D3 | 3e8da3d63c51434bcd368d6829c7cee490170afc32b5137be8e93e7d02315636 | 71a91c4768bd314f3c9dc74e9c7937e8 |  |
+------+------------------------------------------------------------------+----------------------------------+--+
我只想列出HHID不止一次的记录,即7AB和348

你知道我该怎么做吗?

请大家帮忙:

awk-F'[|]+'' $2~/^[:alnum:]+$/{count[$2]+} 结束{ 对于hhid计数{ 如果计数[hhid]>=2{ 打印hhid } } } "档案" -F'[|]+'设置字段分隔符。 $2~/^[[:alnum:]+$/过滤掉标题和水平行。 count[$2]++将值增加到$2,即我们正在计算的字符串。第一次出现时,将值初始化为1。第二次出现时,它将其增加到2,依此类推。 在处理完所有行后运行END。 for hhid in count对count中的字符串进行迭代。
如果count[hhid]>=2跳过任何定义“字符串”的内容?线空格分隔的单词?用一个例子更新了问题。查看和,加上一些或awk。或者只是用Perl、Python或其他您熟悉的脚本语言编写一个程序。再次道歉。HH_ID不一定只包含数字,也可以包含比3更多的字符。我已经编辑了答案。匹配实际上只是过滤掉标题和水平线。如果文件格式更简单,例如制表符分隔,那么awk脚本可能更简单。谢谢。您能解释一下awk命令中的每个语句都在做什么吗。这将非常有助于我增加我的知识。而且,文件是管道分隔的。更简单的命令是什么?类似于awk-F'|'{count[$1]+}END{…}。