Escreva um comando unix para contar o número total de palavras nas primeiras n linhas do arquivo?

Escreva um comando unix para contar o número total de palavras nas primeiras n linhas do arquivo?

Como posso contar as palavras nas primeiras 3linhas?

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 28parece 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 -sopçã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á 25palavras. Isso ocorre porque wc -wconta apenas palavras delimitadas por espaços em branco e consideraria ambas Unix-Likee GNU/Linuxcomo uma única palavra.

Responder3

Com GNU grepou 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

informação relacionada