
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, wc
imprima o resultado junto com os nomes dos arquivos. Se você quiser apenas o resultado, você deve fazer wc
a 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
,,, ...awk
grep
wc -w /usr/share/dict/words | cut -d' ' -f1 > ~/dicwords.txt
Embora isso presuma uma implementação wc
que não adicione caracteres de espaço antes do número, o que não é o caso de todas wc
as 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/words
deve 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 -l
variaçã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