2

ここでシェルスクリプトを使用して、wcコマンドを使用せずにファイル内の単語/文字/行の数を数えようとしています。ファイルを行に分割して数えるのは簡単ですが、ここでは単語や文字を取得するのに苦労しています。

#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"

}

4

2 に答える 2

2

文字に関しては、これを試してください(出力を取得する場所にecho "test"を調整してください):

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

行については、これを試してください:

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

===

あなたのコードに関しては、あなたはこのようなものが単語を数えることを望みます(あなたがそれを完全に生でやりたいのであれば):

while read line ; do
 set $line ;
 while true ; do
  [ -z $1 ] && break
  l=`expr $l + 1`
  shift ;
 done ;
done
于 2012-12-20T00:32:30.767 に答える
0

これは、次のBashシェルスクリプトを使用して実行できます。

count=0
for var in `cat $1`
do
    count=`echo $count+1 | bc`
done
echo $count
于 2017-03-18T16:22:01.670 に答える