Como posso contar o número de caracteres em branco em um arquivo?

3

Eu queria contar o número de caracteres em branco em um arquivo. O melhor que consegui foi:

tr -cd [:space:] < my_file | wc

Existe uma maneira mais limpa?

    
por Armand 29.06.2015 / 15:54

2 respostas

3

tr -cd '[:space:]' < my_file | wc -m

Funcionaria. Mas com GNU tr , isso só funcionaria em byte único por localidades de caracteres (normalmente, não em UTF-8) ou com entrada ASCII somente em locales UTF-8.

Sem as aspas em torno de [:space:] , você receberia uma mensagem de erro em csh, tcsh ou zsh (a menos que a condição abaixo fosse atendida) e na maioria dos shells, isso falharia se houvesse um arquivo chamado : , s , p , a , c ou e no diretório atual, pois [:space:] é um shell glob.

Observe também que wc não conta caracteres por padrão (são bytes, palavras e novas linhas apenas quando não é dada nenhuma opção).

Com o GNU awk , você pode usar:

awk -v RS='[[:space:]]' 'END{print NR}'

Exemplo:

$ printf '
tr -cd '[:space:]' < my_file | wc -m
\u2006\t\r\n' | awk -v RS='[[:space:]]' 'END{print NR}' 4
    
por 30.06.2015 / 23:21
0
#!/bin/bash

file='cat $1'

length='cat $1 | wc -m' // Count the charater
count=0
for ((i = 0 ;i < $length;i++)) do //loop to the end of the string

    if [ "${file:$i:1}" == "$2" ] //Look only character by character (select some characters of the String, (:$i:1) is the range of the choosen characters
    then
        count=$((count + 1))

    fi
done    
echo $count

//test.txt = "Is there a neater way?"
#./CountChar test.txt " "
>>> 4

é uma maneira "diferente" ..x), espero que gostem!

    
por 30.06.2015 / 02:45

Tags