Execute wc e exiba apenas a contagem de palavras

Execute wc e exiba apenas a contagem de palavras

Estou tentando criar um arquivo chamado ~/dictwords.txt, que contém o número de palavras encontradas no arquivo /usr/share/dict/words.

Eu já criei o arquivo e removi-o porque fiz errado. Originalmente fiz o comando echo. Então tentei este comando e fiquei muito animado porque achei que estava correto.

wc -w /usr/share/dict/words > ~/dictwords.txt

Ainda está errado, devo ter apenas o número, sem nome de arquivo.

Responder1

Por padrão, wcimprima o resultado junto com os nomes dos arquivos. Se você quiser apenas o resultado, você deve fazer wca entrada de leitura do stdin:

</usr/share/dict/words wc -w > ~/dicwords.txt

Com sua solução atual, você pode usar outras ferramentas para obter apenas o resultado de wc, como cut,,, ...awkgrep

wc -w /usr/share/dict/words | cut -d' ' -f1 > ~/dicwords.txt

Embora isso presuma uma implementação wcque não adicione caracteres de espaço antes do número, o que não é o caso de todas wcas implementações.

Responder2

Se precisar usar a contagem de palavras no script, você pode salvar o valor em uma variável:

numWords=$(wc -w /usr/share/dict/words | tr -dc '0-9')

caso contrário, você pode salvá-lo no arquivo:

wc -w /usr/share/dict/words | tr -dc '0-9' > ~/dicwords.txt

Responder3

O arquivo /usr/share/dict/wordsdeve conter uma palavra por linha. Em alguns sistemas, imagino que poderia conter um "termo de dicionário" por linha e que cada um deles pode ser composto por mais de uma palavra delimitada por espaço, mas nunca vi isso.

Você obtém o número de linhas com um de

  • wc -l </usr/share/dict/words(conta o número de novas linhas no arquivo)
  • sed -n '$=' /usr/share/dict/words(na última linha, imprima o número da linha atual)
  • awk 'END { print NR }' /usr/share/dict/words(no final da entrada, produza o número de registros (linhas) lidos)
  • grep -c '[^[:space:]]' /usr/share/dict/words(conte o número de linhas que possuem pelo menos um caractere diferente de espaço (semelhante a espaço))

Destas, a wc -lvariação é menos portátil, pois pode gerar, ou não, espaços extras antes e/ou depois do número real.

Responder4

Aqui está uma solução usando cat, que evita imprimir o nome do arquivo após o resultado.

cat /usr/share/dict/words | wc -w

informação relacionada