Como posso contar as palavras nas primeiras 3
linhas?
entrada:
There are many systems which are Unix-like in their architecture.
Not able among these are the GNU/Linux distributions.
The distinctions between Unix and Unix-like systems.
For distinctions between SUS branded UNIX architectures and other similar architectures, see Unix-like.
saída:28
Responder1
Usando awk one-liner:
awk ' { gsub("[-/]"," ") } NR<4 { w+=NF };END { print w }' <filename>
Responder2
$ head -n 3 file | tr -s '/ -' '\n\n\n' | wc -l
28
A contagem 28
parece ser a contagem que você obteria para as três primeiras linhas de um determinado texto se delimitasse as palavras por espaços, travessões e barras.
O comando acima irá dividir as três primeiras linhas em uma palavra por linha, substituindo cada espaço, traço e barra por uma nova linha (e removendo várias novas linhas consecutivas usando a -s
opção com tr
) e, em seguida, contando o número de linhas produzidas por esta divisão .
Se você usar o mais natural head -n 3 file | wc -w
, obterá 25
palavras. Isso ocorre porque wc -w
conta apenas palavras delimitadas por espaços em branco e consideraria ambas Unix-Like
e GNU/Linux
como uma única palavra.
Responder3
Com GNU grep
ou compatível:
<myfile head -n 3 | grep -aEo '\w+' | wc -l
palavrasnesse caso, sendo sequências de um ou mais caracteres alfanuméricos ou sublinhados.
Responder4
head -n 4 myfile | wc -w
myfile é o arquivo de entrada, 4 são as primeiras 4 linhas