假设我有一个类似于以下的文件:
123 123 234 234 123 345
我想找出'123'重复多少次,'234'多少次重复等等 . 理想情况下,输出结果如下:
123 3 234 2 345 1
这将 print duplicate lines only ,计数:
sort FILE | uniq -cd
或者,使用GNU长选项(在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
如果你想 print counts for all lines 包括那些只出现一次的那些:
sort FILE | uniq -c
sort FILE | uniq --count
对于给定的输入,输出为:
3 123 2 234 1 345
为了 sort the output 以最频繁的行位于顶部,您可以执行以下操作(以获得所有结果):
sort FILE | uniq -c | sort -nr
或者,为了获得重复的行,最常见的是:
sort FILE | uniq -cd | sort -nr
在OSX和BSD上,最后一个成为:
sort FILE | uniq -c | grep -v '^ *1 ' | sort -nr
假设您可以访问标准的Unix shell和/或cygwin环境:
tr -s ' ' '\n' < yourfile | sort | uniq -d -c ^--space char
基本上:将所有空格字符转换为换行符,然后对转换后的输出进行排序,并将其输入到uniq并计算重复行 .
假设每行有一个数字:
sort <file> | uniq -c
您可以在GNU版本中使用更详细的 --count 标志,例如在Linux上:
--count
sort <file> | uniq --count
要查找和计算多个文件中的重复行,可以尝试以下命令:
sort <files> | uniq -c | sort -nr
要么:
cat <files> | sort | uniq -c | sort -nr
通过awk:
awk '{dups[$1]++} END{for (num in dups) {print num,dups[num]}}' data
在 awk 'dups[$1]++' 命令中,变量 $1 包含column1的全部内容,方括号是数组访问 . 因此,对于 data 文件中每行的第1列,名为 dups 的数组的节点将递增 .
awk 'dups[$1]++'
$1
data
dups
最后,我们使用 num 作为变量循环 dups 数组,然后首先打印保存的数字,然后打印 dups[num] 的重复值 .
num
dups[num]
请注意,您的输入文件在某些行的末尾有空格,如果您清除它们,您可以在上面的命令中使用 $0 代替 $1 :)
$0
如果有人正在寻找执行类似工作的在线网站:
http://www.kennistranslations.com/wordcount
In windows using "Windows PowerShell" 我使用下面提到的命令来实现这一目标
Get-Content .\file.txt | Group-Object | Select Name, Count
我们也可以使用where-object Cmdlet来过滤结果
Get-Content .\file.txt | Group-Object | Where-Object { $_.Count -gt 1 } | Select Name, Count
7 回答
这将 print duplicate lines only ,计数:
或者,使用GNU长选项(在Linux上):
在BSD and OSX you have to use grep上过滤掉唯一的行:
对于给定的示例,结果将是:
如果你想 print counts for all lines 包括那些只出现一次的那些:
或者,使用GNU长选项(在Linux上):
对于给定的输入,输出为:
为了 sort the output 以最频繁的行位于顶部,您可以执行以下操作(以获得所有结果):
或者,为了获得重复的行,最常见的是:
在OSX和BSD上,最后一个成为:
假设您可以访问标准的Unix shell和/或cygwin环境:
基本上:将所有空格字符转换为换行符,然后对转换后的输出进行排序,并将其输入到uniq并计算重复行 .
假设每行有一个数字:
您可以在GNU版本中使用更详细的
--count
标志,例如在Linux上:要查找和计算多个文件中的重复行,可以尝试以下命令:
要么:
通过awk:
在
awk 'dups[$1]++'
命令中,变量$1
包含column1的全部内容,方括号是数组访问 . 因此,对于data
文件中每行的第1列,名为dups
的数组的节点将递增 .最后,我们使用
num
作为变量循环dups
数组,然后首先打印保存的数字,然后打印dups[num]
的重复值 .请注意,您的输入文件在某些行的末尾有空格,如果您清除它们,您可以在上面的命令中使用
$0
代替$1
:)如果有人正在寻找执行类似工作的在线网站:
http://www.kennistranslations.com/wordcount
In windows using "Windows PowerShell" 我使用下面提到的命令来实现这一目标
我们也可以使用where-object Cmdlet来过滤结果