Pesquisa de site

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