Diversão no Terminal Linux - Brinque com contagens de palavras e caracteres
A linha de comando do Linux é muito divertida e muitas tarefas tediosas podem ser executadas com muita facilidade, mas com perfeição. Brincar com palavras e caracteres, sua frequência em um arquivo de texto, etc. é o que veremos neste artigo.
O único comando que vem à nossa mente, para ajustar a linha de comando do Linux para manipular palavras e caracteres de um arquivo de texto, é o comando wc.
Um comando ‘wc’ que significa contagem de palavras é capaz de imprimir contagens de novas linhas, palavras e bytes de um arquivo de texto.
Para trabalhar com pequenos scripts para analisar arquivos de texto, devemos ter um arquivo de texto. Para manter a uniformidade, estamos criando um arquivo de texto com a saída do comando man, conforme descrito a seguir.
man man > man.txt
O comando acima cria um arquivo de texto ‘man.txt’ com o conteúdo da ‘página de manual’ para o comando ‘man’.
Queremos verificar as palavras mais comuns, no ‘Arquivo de Texto‘ criado acima, executando o script abaixo.
cat man.txt | tr ' ' '2' | tr '[:upper:]' '[:lower:]' | tr -d '[:punct:]' | grep -v '[^a-z]' | sort | uniq -c | sort -rn | head
Saída de amostra
7557
262 the
163 to
112 is
112 a
78 of
78 manual
76 and
64 if
63 be
O script simples de uma linha acima mostra dez palavras que aparecem com mais frequência e sua frequência de aparecimento no arquivo de texto.
Que tal dividir uma palavra em indivíduos usando o seguinte comando.
echo 'tecmint team' | fold -w1
Saída de amostra
t
e
c
m
i
n
t
t
e
a
m
Nota: aqui, ‘-w1’ é para largura.
Agora iremos quebrar cada palavra em um arquivo de texto, classificar o resultado e obter a saída desejada com a frequência dos dez caracteres mais frequentes.
fold -w1 < man.txt | sort | uniq -c | sort -rn | head
Saída de amostra
8579
2413 e
1987 a
1875 t
1644 i
1553 n
1522 o
1514 s
1224 r
1021 l
Que tal obter os caracteres mais frequentes no arquivo de texto com letras maiúsculas e minúsculas de forma diferente, juntamente com sua frequência de ocorrência.
fold -w1 < man.txt | sort | tr '[:lower:]' '[:upper:]' | uniq -c | sort -rn | head -20
Saída de amostra
11636
2504 E
2079 A
2005 T
1729 I
1645 N
1632 S
1580 o
1269 R
1055 L
836 H
791 P
766 D
753 C
725 M
690 U
605 F
504 G
352 Y
344 .
Verifique a saída acima, onde o sinal de pontuação está incluído. Vamos eliminar a pontuação, com o comando ‘tr’. Aqui vamos nós:
fold -w1 < man.txt | tr '[:lower:]' '[:upper:]' | sort | tr -d '[:punct:]' | uniq -c | sort -rn | head -20
Saída de amostra
11636
2504 E
2079 A
2005 T
1729 I
1645 N
1632 S
1580 O
1550
1269 R
1055 L
836 H
791 P
766 D
753 C
725 M
690 U
605 F
504 G
352 Y
Agora que tenho três arquivos de texto, vamos executar o script de linha acima para ver a saída.
cat *.txt | fold -w1 | tr '[:lower:]' '[:upper:]' | sort | tr -d '[:punct:]' | uniq -c | sort -rn | head -8
Saída de amostra
11636
2504 E
2079 A
2005 T
1729 I
1645 N
1632 S
1580 O
A seguir iremos gerar aquelas letras pouco frequentes com pelo menos dez letras. Aqui está o script simples.
cat man.txt | tr '' '2' | tr '[:upper:]' '[:lower:]' | tr -d '[:punct:]' | tr -d '[0-9]' | sort | uniq -c | sort -n | grep -E '..................' | head
Saída de amostra
1 ──────────────────────────────────────────
1 a all
1 abc any or all arguments within are optional
1 able see setlocale for precise details
1 ab options delimited by cannot be used together
1 achieved by using the less environment variable
1 a child process returned a nonzero exit status
1 act as if this option was supplied using the name as a filename
1 activate local mode format and display local manual files
1 acute accent
Nota: Quanto mais e mais pontos no script acima até que todos os resultados sejam gerados. Podemos usar .{10} para obter correspondências de dez caracteres.
Esses scripts simples também nos permitem conhecer as palavras e caracteres que aparecem com mais frequência em inglês.
É tudo por agora. Estarei aqui novamente com outro tópico interessante e fora do comum que vale a pena conhecer, que vocês vão adorar ler. Não se esqueça de nos fornecer seus valiosos comentários na seção de comentários abaixo.
Leia também: 20 comandos engraçados do Linux