假设我有类似如下的文件:在文件中查找重复行并计算每行重复的行数?
123
123
234
234
123
345
我想找到多少次“123”被复制,多少次“234”被复制等 因此理想情况下,输出会是这样:
123 3
234 2
345 1
假设我有类似如下的文件:在文件中查找重复行并计算每行重复的行数?
123
123
234
234
123
345
我想找到多少次“123”被复制,多少次“234”被复制等 因此理想情况下,输出会是这样:
123 3
234 2
345 1
假设有每行一个数:
sort <file> | uniq -c
可以使用了更详细--count
标志也与GNU版本,例如,在Linux上:
sort <file> | uniq --count
这是我做的算法,但这似乎并不是最有效的方法(O(n log n)* avg_line_len,其中n是行数)。我正在处理几千兆字节的文件,因此性能是一个关键问题。我想知道是否有一个工具只使用前缀树(在我的情况下,字符串通常具有通用前缀)或类似的一次性计数,这应该在O(n)* avg_line_len中执行。有谁知道这样的命令行工具? – Droggl
另一个步骤是将输出管道输送到最终的“sort -n”命令中。这将排序最经常出现的结果。 – samoz
如果只想打印重复行,请使用'uniq -d' – DmitrySandalov
假设你就可以访问一个标准的Unix shell和/或cygwin环境:
tr -s ' ' '\n' < yourfile | sort | uniq -d -c
^--space char
基本上是:将所有空格字符对换行符进行排序,然后对transeated输出进行排序并将其输出到uniq并对重复行进行计数。
要查找并计算在多个文件中重复的行,你可以试试下面的命令:
sort <files> | uniq -c | sort -nr
或:
cat <files> | sort | uniq -c | sort -nr
+1来显示最常见的行 –
这将打印重复的行只,具有计数:
sort FILE | uniq -cd
或者在GNU long选项下(在Linux上):
sort FILE | uniq --count --repeated
上BSD and OSX you have to use grep筛选出独特的线条:
sort FILE | uniq -c | grep -v '^ *1 '
对于给定的例子,其结果必然是:
3 123
2 234
如果你想为打印计数所有行包括仅出现一次的行:
sort FILE | uniq -c
,或者与GNU长选项(在Linux):
sort FILE | uniq --count
对于给定的输入,输出为:
3 123
2 234
1 345
为了排序输出与最频繁的行上,你可以做以下(获得所有结果):
sort FILE | uniq -c | sort -nr
,或者只得到重复的行,最常见的第一:
sort FILE | uniq -cd | sort -nr
在OSX和BSD最后一节变成:
sort FILE | uniq -c | grep -v '^ *1 ' | sort -nr
通过awk:
awk '{dups[$1]++} END{for (num in dups) {print num,dups[num]}}' data
在awk 'dups[$1]++'
命令中,变量$1
保存了column1和方括号的全部内容都是数组访问。因此,对于data
文件中的每一行第一列,名为dups
的数组的节点增加。
和结束时,我们遍历dups
阵列num
为变量和打印保存数字第一再由dups[num]
其数量的重复值。
请注意,输入文件有一些线路的末端空间,如果你清楚了这些,你可以代替$1
命令:)
考虑到我们有'uniq',这不是过分夸张吗? –
'sort | uniq和awk解决方案有着完全不同的性能和资源权衡:如果文件很大并且不同的行数很少,那么awk解决方案效率会更高。它的线数是线性的,空间使用率在不同线的数量上是线性的。 OTOH,awk解决方案需要保留内存中的所有不同行,而(GNU)排序可以使用临时文件。 –
上面使用“Windows PowerShell中”我用$0
在windows使用以下提及的命令来实现这个
Get-Content .\file.txt | Group-Object | Select Name, Count
此外,我们可以使用其中对象cmdlet过滤结果
Get-Content .\file.txt | Group-Object | Where-Object { $_.Count -gt 1 } | Select Name, Count
是否可以删除除最后一个以外的所有副本......不改变文件的排序顺序? – jparram
你想用什么语言? – VMAtm