Подсчитайте количество гласных и согласных в слове - PullRequest
0 голосов
/ 17 августа 2011

Я хочу вычислить количество гласных и согласных в слове в сценарии оболочки, но я не уверен, как я могу пробежать слово.Может кто-нибудь мне помочь?Что у меня до сих пор есть:

#!/bin/bash

echo 'Give a word'

read word

case $word
in
        a*|e*|i*|o*|u*)
                vowels=&((klinker + 1 ))
        ;;
        *)
                consonants=&((medeklinker + 1 ))
        ;;
esac

echo $vowels
echo $consonants

Ответы [ 4 ]

1 голос
/ 17 августа 2011
vowels=`echo $word | tr -cd 'aeiou' | wc -c`
1 голос
/ 17 августа 2011

Предполагая, что вы хотите посчитать количество гласных и согласных, и что оболочка равна bash, как насчет:

word=abstemiously
vowels=$(echo $word | sed 's/[^aeiou]//g')
consonants=$(echo $word | sed 's/[aeiou]//g')

echo "${#word} characters"
echo "${#vowels} vowels"
echo "${#consonants} consonants"

Вывод:

12 characters
5 vowels
7 consonants

Выможет сжать обработку, и вы можете использовать tr вместо sed.Кроме того, в Bash 4.x есть, по крайней мере, операции подстановки в оболочке, которые могут быть использованы, поэтому вам вообще не нужно запускать внешнюю программу (например, tr или sed).Вам также нужно подумать о том, что происходит с пунктуацией, цифрами и пробелами (обычно это не буквы).Опять же, есть несколько способов справиться с такими проблемами.

0 голосов
/ 22 октября 2013

# Очень простая программа для подсчета гласных и согласных:

чтение слова
v = `echo $ word |tr-cd 'aeiou' |wc -c`
c = `echo $ word |tr -cd 'bcdfghjklmnpqrstvwxyz' |wc -c`

echo "vowels = $ v"
echo "consonants = $ c"

0 голосов
/ 18 августа 2011

только с bash:

letters=${word//[^[:alpha:]]/}     # remove all whitespace, punctuation, etc
cnsnnts=${letters//[aeiou]/}       # remove vowels
num_consonents=${#cnsnnts}
num_vowels=$(( ${#letters} - $num_consonents ))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...