How can I use the UNIX shell to count the number of times a letter appears in a text file?

故事扮演 提交于 2019-12-02 23:23:11
grep char -o filename | wc -l

Another alternative:

tr -d -C X <infile | wc -c

where X is the character or string of characters you want to count and infile is the input file.

Alternative to grep:

sed 's/[^x]//g' filename | tr -d '\012' | wc -c

where x is the character you want to count.

There's also awk:

$ echo -e "hello world\nbye all" | awk -Fl '{c += NF - 1} END {print c}'
5

Change -Fl to -F<your character>.

This works by setting the field delimiter to the character specified by -F, then accumulating the number of fields on each line - 1 (because if there's one delimiter, there are two fields - but we should only count 1).

dantesan
awk '{ printf "%s\n", gsub( "ur_char", "oth_char", $0 ) }' < your_file_name > output.txt

you can add count of current line number to get the line numbers in awk also.

echo "a/b/c/d/e/f/g" | awk -F"/" '{print NF}'

this will give the number of occurrence of character "/"

In this case, i'am counting the character "|":

expr `wc -c < filename` \- `tr -d \| < filename | wc -c`

You can try easily: grep -c 'YOUR LETTER' YOUR FILE

try it with

grep  [PATTERN] -o [FILE] | wc -l

and please do not use cat if not needed.

Here is another way

cat  input_file | \
awk 'BEGIN {FS="x"; var=0 } \
{if (NF>0){ var=var + (NF-1) } } \
END{print var}'

where X is the character or string of characters you want to count and infile is the input file

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!