cupakob
cupakob

Reputation: 8531

Count occurrences of a char in plain text file

Is there any way under linux/terminal to count, how many times the char f occurs in a plain text file?

Upvotes: 142

Views: 106313

Answers (5)

user1985553
user1985553

Reputation: 1062

even faster:

tr -cd f < file | wc -c

Time for this command with a file with 4.9 MB and 1100000 occurences of the searched character:

real   0m0.089s
user   0m0.057s
sys    0m0.027s

Time for Vereb answer with echo, cat, tr and bc for the same file:

real   0m0.168s
user   0m0.059s
sys    0m0.115s

Time for Rob Hruska answer with tr, sed and wc for the same file:

real   0m0.465s
user   0m0.411s
sys    0m0.080s

Time for Jefromi answer with fgrep and wc for the same file:

real   0m0.522s
user   0m0.477s
sys    0m0.023s 

Upvotes: 77

Vereb
Vereb

Reputation: 14716

echo $(cat <file>  | wc -c) - $(cat <file>  | tr -d 'A' | wc -c) | bc

where the A is the character

Time for this command with a file with 4.9 MB and 1100000 occurences of the searched character:

real   0m0.168s
user   0m0.059s
sys    0m0.115s

Upvotes: 10

Jongo the Gibbon
Jongo the Gibbon

Reputation: 97

If all you need to do is count the number of lines containing your character, this will work:

grep -c 'f' myfile

However, it counts multiple occurrences of 'f' on the same line as a single match.

Upvotes: 8

Cascabel
Cascabel

Reputation: 496902

How about this:

fgrep -o f <file> | wc -l

Note: Besides much easier to remember/duplicate and customize, this is about three times (sorry, edit! botched the first test) faster than Vereb's answer.

Upvotes: 188

Rob Hruska
Rob Hruska

Reputation: 120286

tr -d '\n' < file | sed 's/A/A\n/g' | wc -l

Replacing the two occurrences of "A" with your character, and "file" with your input file.

  • tr -d '\n' < file: removes newlines
  • sed 's/A/A\n/g: adds a newline after every occurrence of "A"
  • wc -l: counts the number of lines

Example:

$ cat file
abcdefgabcdefgababababbbba


1234gabca

$ tr -d '\n' < file | sed 's/a/a\n/g' | wc -l
9

Upvotes: 4

Related Questions