у меня есть переменная, такая как "1,2,3,4"
я хочу посчитать запятые в этом тексте в bash
есть идеи?
спасибо за помощь
Это будет делать то, что вы хотите:
echo "1,2,3" | tr -cd ',' | wc -c
С макушки головы, используя чистый удар:
var="1,2,3,4" temp=${var//[^,]/} echo ${#temp}
Изолировать запятые на строку, количество строк:
echo "$VAR"|grep -o ,|wc -l
echo '1,2,3' | grep -o ',' | wc -l
очень просто с awk
$ echo 1,2,3,4 | awk -F"," '{print NF-1}' 3
только с оболочкой
$ s="1,2,3,4" $ IFS="," $ set -- $s $ echo $(($#-1)) 3
Еще один чистый раствор Bash:
var="bbb,1,2,3,4,a,b,qwerty,,," saveIFS="$IFS" IFS=',' var=($var)x IFS="$saveIFS" echo $((${#var[@]} - 1))
выведет «10» с показанной строкой.
Чисто bash решение без внешних программ:
$ X=1,2,3,4 $ count=$(( $(IFS=,; set -- $X; echo $#) - 1 )) $ echo $count 3 $
Примечание: это разрушает ваши позиционные параметры.