подсчитать конкретное слово в строке в bash - PullRequest
6 голосов
/ 02 февраля 2010

у меня есть переменная, такая как "1,2,3,4"

я хочу посчитать запятые в этом тексте в bash

есть идеи?

спасибо за помощь

Ответы [ 7 ]

7 голосов
/ 02 февраля 2010

Это будет делать то, что вы хотите:

echo "1,2,3" | tr -cd ',' | wc -c
1 голос
/ 02 февраля 2010

С макушки головы, используя чистый удар:

var="1,2,3,4"
temp=${var//[^,]/}
echo ${#temp}
1 голос
/ 02 февраля 2010

Изолировать запятые на строку, количество строк:

echo "$VAR"|grep -o ,|wc -l
0 голосов
/ 19 октября 2014
echo '1,2,3' | grep -o ',' | wc -l
0 голосов
/ 02 февраля 2010

очень просто с awk

$ echo 1,2,3,4 | awk -F"," '{print NF-1}'
3

только с оболочкой

$ s="1,2,3,4"
$ IFS=","
$ set -- $s
$ echo $(($#-1))
3
0 голосов
/ 02 февраля 2010

Еще один чистый раствор Bash:

var="bbb,1,2,3,4,a,b,qwerty,,,"
saveIFS="$IFS"
IFS=','
var=($var)x
IFS="$saveIFS"
echo $((${#var[@]} - 1))

выведет «10» с показанной строкой.

0 голосов
/ 02 февраля 2010

Чисто bash решение без внешних программ:

$ X=1,2,3,4
$ count=$(( $(IFS=,; set -- $X; echo $#) - 1 ))
$ echo $count
3
$

Примечание: это разрушает ваши позиционные параметры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...