質問

私は使用しました:

tr -dc [:alpha:] < $fileDoc | wc -c
.

すべての文字を数える、

tr -dc ' ' < $fileDoc | wc -c
.

すべてのスペースを数える、

tr -dc '\n' < $fileDoc | wc -c
.

テキスト文書内のすべての新しい行を数える。

私が今やりたいことは、私が他のすべてのものを呼び出すように、文書内の他のすべての文字を数えることです。

これは文書からのテキストです:

こんにちはこれはテストテキスト文書です。

123

!@#
.

[:alpha:]\nをすべて削除する方法は見つけられ、残りの文字を数えますか?

役に立ちましたか?

解決

これはトリック

をするべきです
tr -d '[:alpha:] \n'  < $fileDoc | wc -c
.

またはおそらく、空白の定義にタブを含める場合は

tr -d '[:alpha:][:space:]'  < $fileDoc | wc -c
.

OPのコメントに基づいて、アルファベット順、スペース、数字、および新規範囲を削除し、残りのすべての文字を数えるには、

tr -d '[:alnum:][:space:]' < $fileDoc | wc -c
.

[:alnum:]はアルファベットと数字の文字を占めています。[:space:]は、Newlines

を含むすべての空白の世話をします

他のヒント

参照のためにここに投稿するだけで、このawkスクリプトを一時的にしたい場合は、次のように動作する必要があります。

awk -v FS='' '
{
    for(i=1; i<=NF; i++) {
        if($i ~ /[a-zA-Z]/) {alpha++};
        if($i == " ") {space++};
        if($i !~ /[A-Za-z0-9 ]/) {spl++}
    }
}
END {
    printf "Space=%s, Alphabets=%s, SplChars=%s, NewLines=%s\n", space, alpha, spl, NR
}' file
.

$ cat file
This is a text
I want to count
alot of $tuff
in 1 single shot
.

$ awk -v FS='' '
{
    for(i=1; i<=NF; i++) {
        if($i ~ /[a-zA-Z]/) {alpha++};
        if($i == " ") {space++};
        if($i !~ /[A-Za-z0-9 ]/) {spl++}
    }
}
END {
    printf "Space=%s, Alphabets=%s, SplChars=%s, NewLines=%s\n", space, alpha, spl, NR
}' file
Space=11, Alphabets=45, SplChars=1, NewLines=4
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top