Мне нужно подсчитать количество вхождений символа в строку с помощью Bash.
В следующем примере, когда полукокс (например) t
, то echo
˙s правильного числа вхождений t
в var
, но , когда символ запятая или точка с запятой, она выводит ноль:
var = "text,text,text,text"
num = `expr match $var [,]`
echo "$num"
Ответы:
Я бы использовал следующую
awk
команду:Я разделяю строку на
$char
и печатаю количество результирующих полей минус 1.Если ваша оболочка не поддерживает
<<<
оператора, используйтеecho
:источник
$(grep -o "$needle" < filename | wc -l)
wc -l
, просто используйтеgrep -c
, он работает как с bsd grep, так и с linux grep.grep -c
выведет только количество совпадающих строк. Он не учитывает несколько совпадений в строке.вы можете, например, удалить все остальные символы и подсчитать то, что осталось, например:
напечатает
или
или
или
или
или
источник
y="${x//[^s|S]}"; echo "${#y}"
wc
? Это гольф!echo -n some line | wc -l
tr -dc ',' <<<"$var" | wc -c
Вы можете сделать это путем объединения
tr
иwc
команды. Например, чтобы посчитатьe
в строкеreferee
вывод
Пояснения: Команда
tr -cd 'e'
удаляет все символы, кроме 'e', а Командаwc -c
считает оставшиеся символы.Несколько строк ввода также хороши для этого решения, как команда
cat mytext.txt | tr -cd 'e' | wc -c
тазов подсчетыe
в файлеmytext.txt
, даже думали , что файл может содержать много строк.источник
Это самая короткая и приятная версия, основанная на всех замечательных ответах и комментариях:
grep -o "$needle" <<< "$haystack" | wc -l
источник
awk работает хорошо, если он есть на вашем сервере
источник
awk -F,
ищет файл,
. Вы можете сделать следующее:awk -F"${your_char}"
Я бы предложил следующее:
Никаких звонков в другие программы
источник
также проверьте это, например, мы хотим посчитать
t
или в
python
или даже лучше, мы можем сделать наш скрипт динамическим с помощью
awk
в этом случае вывод будет таким:
источник