我有这个数组:
array=(1 2 3 4 4 3 4 3)
Run Code Online (Sandbox Code Playgroud)
我可以得到最大的数字:
echo "num: $(printf "%d\n" ${array[@]} | sort -nr | head -n 1)"
#outputs 4
Run Code Online (Sandbox Code Playgroud)
但是我希望得到所有4个加上它们的总和,这意味着我希望它输出12(有3次出现4次).有任何想法吗?
dc <<<"$(printf '%d\n' "${array[@]}" | sort -n | uniq -c | tail -n 1) * p"
Run Code Online (Sandbox Code Playgroud)
sort 最终得到最大值uniq -c 获取唯一值,并计算它们出现的次数tail 仅获取最后一行(具有最大值及其计数)dc 将值乘以计数我选择dc了乘法步骤因为它是RPN,所以你不必分割uniq -c输出并在其中间插入任何东西 - 只需添加东西到最后.
| 归档时间: |
|
| 查看次数: |
5848 次 |
| 最近记录: |