Matthew The Terrible
Matthew The Terrible

Reputation: 1643

count words in a file without using wc

Working in a shell script here, trying to count the number of words/characters/lines in a file without using the wc command. I can get the file broken into lines and count those easy enough, but I'm struggling here to get the words and the characters.

#define word_count function
count_stuff(){
    c=0
    w=0
    l=0
    local f="$1"
    while read Line
    do
        l=`expr $line + 1`
        # now that I have a line I want to break it into words and characters???
    done < "$f"
    echo "Number characters:  $chars"
    echo "Number words: $words"
    echo "Number lines: $line"

}

Upvotes: 2

Views: 14204

Answers (2)

Dhruvit Navadiya
Dhruvit Navadiya

Reputation: 1

You can do this with the following Bash shell script:

count=0
for var in `cat $1`
do
    count=`echo $count+1 | bc`
done
echo $count

Upvotes: 0

Marex
Marex

Reputation: 36

As for characters, try this (adjust echo "test" to where you get your output from):

expr `echo "test" | sed "s/./ + 1/g;s/^/0/"`

As for lines, try this:

expr `echo -e "test\ntest\ntest" | sed "s/^.*$/./" | tr -d "\n" | sed "s/./ + 1/g;s/^/0/"`

===

As for your code, you want something like this to count words (if you want to go at it completely raw):

while read line ; do
 set $line ;
 while true ; do
  [ -z $1 ] && break
  l=`expr $l + 1`
  shift ;
 done ;
done

Upvotes: 2

Related Questions