繁体   English   中英

计算 bash 数组中的唯一值

[英]Count unique values in a bash array

我有一个数组${sorted[@]} 如何计算数组元素的出现频率。

例如:

数组值:

bob
jane
bob
peter

结果:

bob 2
jane 1
peter 1

命令

(IFS=$'\n'; sort <<< "${array[*]}") | uniq -c

说明

  • 使用成语sort file | uniq -c计算唯一行的出现次数 sort file | uniq -c
  • 我们也可以从命令行输入字符串,而不是使用文件,使用here字符串运算符<<<进行sort
  • 最后,我们必须将数组条目转换为单个字符串中的行。 使用${array[*]} ,数组将扩展为一个字符串,其中数组元素由$IFS分隔。
  • 使用IFS=$'\\n'我们将$IFS变量专门设置为此命令的换行符。 $'...'称为ANSI-C Quoting ,允许我们将换行符表示为\\n
  • 子shell (...)用于保持$IFS本地的变化。 在命令$IFS将具有与之前相同的值。

array=(fire air fire earth water air air)
(IFS=$'\n'; sort <<< "${array[*]}") | uniq -c

版画

      3 air
      1 earth
      2 fire
      1 water

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM