Como verificar a ortografia no estilo Unix da velha guarda

Conteúdo

Bash Shell

Antes que os processadores de texto tivessem um recurso de verificação ortográfica, teve que executar sua própria verificação ortográfica em um documento. E nos primeiros dias do Unix, los sistemas no tenían un programa derevisión ortográfica” Também você pode apenas dizer, em vez disso, eles exigiam um conjunto de comandos para fazer você mesmo. Vamos dar uma olhada em como verificar a ortografia do modo "old school Unix".

Verificação ortográfica na linha de comando

Nos dias de hoje, não acreditamos no corretor ortográfico do nosso processador de texto. Ele pode nem mesmo "executar" um corretor ortográfico mais. É mais fácil observar a linha ondulada vermelha que aparece sob as palavras com erros ortográficos; se houver uma linha vermelha embaixo, Pronúncia Correta.

Nos primeiros dias do Unix, o sistema forneceu um arquivo de dicionário (geralmente /usr/share/dict/words na maioria dos sistemas Linux) que continha uma lista ordenada de palavras do dicionário, com cada palavra em uma linha por si só. Para verificar a ortografia de um documento, você deve comparar todas as palavras do seu documento com o arquivo do dicionário. E para fazer isso, você precisa converter seu documento para um formato que se pareça com o arquivo de dicionário: uma lista ordenada de palavras, com cada palavra em sua própria linha.

O arquivo de dicionário está em minúsculas, então você deve primeiro converter seu documento para usar letras minúsculas. Você faz isso com ele cat comando para exibir o arquivo, e ele tr comando para traduzir caracteres de um conjunto para outro. Para este caso, Você pode perguntar tr para converter todas as letras maiúsculas Arizona para letras minúsculas Arizona:

documento gato | tr A-Z a-z

Embora o dicionário inclua pontuação em palavras como hífens e apóstrofos, a lista de palavras não inclui pontuação de frases, como pontos e pontos de interrogação. Então, a próxima etapa é usar tr, desta vez para remover (-d) os personagens que não queremos:

documento gato | tr A-Z a-z | tr -d ',.:;()?!'

O arquivo de dicionário tem cada palavra em uma linha por si só, então você precisa dividir o documento para que cada palavra apareça em sua própria linha. a tr El comando puede reemplazar espacios con un carácter de “nova linha”, fazer isso por nós:

documento gato | tr A-Z a-z | tr -d ',.:;()?!' | tr '' 'n'

A classificação da saída é facilmente feita com Unix sort comando. Adicione o uniq comando para limpar a saída, para remover quaisquer palavras duplicadas. Como um exemplo, probablemente use la palabra “a” varias veces en cualquier documento. Usando sort depois de uniq eliminará las instancias repetidas dethepara que solo tenga untheen su salida.

documento gato | tr A-Z a-z | tr -d ',.:;()?!' | tr '' 'n' | ordenar | uniq

Agora você está pronto para comparar a lista de palavras em seu documento com o arquivo de dicionário!! O comando Unix padrão comm compara dois arquivos linha por linha e identifica linhas que são exclusivas do primeiro arquivo, exclusivo para o segundo arquivo ou linhas que são comuns a ambos. Para encontrar a lista de palavras com erros ortográficos no seu documento, você quer a lista de palavras únicas: palavras encontradas em seu documento, mas não no arquivo de dicionário. Use o -2 opção a não imprime as palavras únicas do segundo arquivo, e ele -3 opção a não mostre as palavras que são comuns a ambos os arquivos. O que resta são as palavras exclusivas do seu documento que não aparecem no dicionário; Estas são palavras com erros ortográficos.

documento gato | tr A-Z a-z | tr -d ',.:;()?!' | tr '' 'n' | ordenar | uniq | comm -2 -3 - /usr / compartilhar / dict / palavras

O script simples diz comm para leer de laentrada estándar”, que é a saída dos comandos acima na linha de comando.

E é assim que você soletra a verificação ortográfica do modo "old school Unix"!! Deixe-me mostrar um documento de amostra. Escrevi intencionalmente algumas palavras erradas aqui:

$cat document
Early Unix didn't have word procesors like we thikn of them today. Instead,
you wrote a plain text document that might have embedded special commands to
underline text or create a list of bulet points. But how did you check the
spelling of your document?

Al ejecutar la lista de comandos, encontrará esta lista de palabras mal escritas:

$documento gato | tr A-Z a-z | tr -d ',.:;()?!' | tr '' 'n' | ordenar | uniq | comm -2 -3 - words
bulet
procesors
thikn

La clave para revisar la ortografía de esta manera es Unix comm comando para comparar dos listas ordenadas de palabras. As duas listas devem ser ordenadas da mesma maneira. No sistema Linux /usr/share/dict/words O arquivo pode incluir algumas palavras maiúsculas, como nomes comuns, títulos ou locais. Como um exemplo, o arquivo de dicionário no meu sistema Fedora 32 contém "Minnesota" (letras maiúsculas corretas para o nome do estado dos EUA. UU.) “Minnesota” (todas as letras minúsculas) em linhas adjacentes. Mas o Unix sort O comando classifica as letras maiúsculas separadamente das minúsculas. Isso vai confundir o comm comando, que reclamará que o arquivo de entrada não está classificado corretamente. Para corresponder melhor ao método "old school Unix" de verificação ortográfica, você pode precisar classificar o arquivo de dicionário do seu sistema primeiro e salvá-lo em um arquivo separado. Você pode fazer assim:

classificar / usr / compartilhar / dict / palavras > palavras
Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.