查找数字中特定数字的重复

查找数字中特定数字的重复

例如我的输入是12451.我需要获取1数字中重复的次数。

答案1

使用 GNU grep

$ echo 12451 | grep -o . | grep -c 1
2

使用 GNU awk

$ echo 12451 | gawk -v num=1 'BEGIN { FS = "" } {for (i = 1; i <= NF; i++) if ($i == $num) count++ } END {print $count}'
2

使用 POSIX awk 作为在此评论中建议:

$ echo 12451 | awk '{print gsub(/1/,"")}'
2

答案2

zsh

$ string=12451
$ echo ${#string//[^1]}
2

答案3

假设数据到达标准输入(例如通过管道传输echo):

LC_ALL=C tr -d -c '1' | LC_ALL=C wc -c

这会删除所有不存在的字符1,然后计算剩余的字符。

假设数据保存在 shell 变量 中,value例如bash

ones=${value//[\!1]/}; echo "${#ones}"

这实际上与第一个命令执行相同的操作。它删除1值中的所有非字符$value,将结果字符串分配给新变量ones,并输出该字符串的长度。

答案4

这是另一种使用 grep 和使用 wc 进行行计数的方法:

grep -o '1' <<< 12451 | wc -l

相关内容