The string count() method returns the number of occurrences of a substring in the given string. In simple words, count() method searches the substring in the given string and returns how many times the substring is present in it.
Using the grep Command And by using the -o option, it prints only the matching character. Then we sort results from the grep command. And we count the occurrences of the search character using the uniq command with the -c option. Finally, we use the cut command to remove the unwanted string from the final result.
you can use wc to count the number of characters in the file wc -m filename.
'#' symbol can be used to count the length of the string without using any command. `expr` command can be used by two ways to count the length of a string. Without `expr`, `wc` and `awk` command can also be used to count the length of a string.
you can for example remove all other chars and count the whats remains, like:
var="text,text,text,text"
res="${var//[^,]}"
echo "$res"
echo "${#res}"
will print
,,,
3
or
tr -dc ',' <<<"$var" | awk '{ print length; }'
or
tr -dc ',' <<<"$var" | wc -c #works, but i don't like wc.. ;)
or
awk -F, '{print NF-1}' <<<"$var"
or
grep -o ',' <<<"$var" | grep -c .
or
perl -nle 'print s/,//g' <<<"$var"
I would use the following awk
command:
string="text,text,text,text"
char=","
awk -F"${char}" '{print NF-1}' <<< "${string}"
I'm splitting the string by $char
and print the number of resulting fields minus 1.
If your shell does not support the <<<
operator, use echo
:
echo "${string}" | awk -F"${char}" '{print NF-1}'
You can do it by combining tr
and wc
commands. For example, to count e
in the string referee
echo "referee" | tr -cd 'e' | wc -c
output
4
Explanations: Command tr -cd 'e'
removes all characters other than 'e', and Command wc -c
counts the remaining characters.
Multiple lines of input are also good for this solution, like command cat mytext.txt | tr -cd 'e' | wc -c
can counts e
in the file mytext.txt
, even thought the file may contain many lines.
*** Update ***
To solve the multiple spaces in from of the number (@tom10271), simply append a piped tr command:
tr -d ' '
For example:
echo "referee" | tr -cd 'e' | wc -c | tr -d ' '
Building on everyone's great answers and comments, this is the shortest and sweetest version:
grep -o "$needle" <<< "$haystack" | wc -l
awk is very cool, but why not keep it simple?
num=$(echo $var | grep -o "," | wc -l)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With