Как посчитать количество вхождений символа в строку в Bash - PullRequest
0 голосов
/ 01 декабря 2018

Это код:

#bash/bin
echo "Enter a sentence:"
read -e -a sentence
char="k"
echo "${sentence}" | awk -F"${char}" '{print NF-1}'

Проблема:

Возвращает эту ошибку:

': недопустимое предложение идентификатора -1

Пример ввода

Enter a sentence:
thanks and okay

Пример вывода

2

Вопрос:

Как это исправить?

Ответы [ 2 ]

0 голосов
/ 01 декабря 2018
#bash/bin
OLDIFS=$IFS; IFS=$'\0' # change IFS for avoid issue with spaces
read -a sentence -p "Enter a sentence: "
IFS=$OLDIFS # IFS old value
char="k"
grep -o '.' <<< "$sentence" |  grep "$char" | wc -l # first grep explode string characters, second grab character, wc count occurrences
0 голосов
/ 01 декабря 2018

Просто удалите все , но $char, а затем посчитайте результаты.

echo "Enter a sentence:"
read -e sentence
char="k"
filtered=${sentence//[^$char]/}  # Delete anything *not* a $char
echo "${#filtered}"              # Output the length of filtered

Используя стандартную оболочку, вам потребуется пара внешних утилит вместо подстановки параметров bashоператор.

echo "$sentence" | tr -cd "$char" | wc -c
...