Come controllare l'ortografia in stile Unix della vecchia scuola

Contenuti

Bash Shell

Prima che i word processor avessero una funzione di controllo ortografico, ha dovuto eseguire il proprio controllo ortografico su un documento. E nei primi giorni di Unix, los sistemas no tenían un programa derevisión ortográficadedicado, piuttosto hanno richiesto una serie di comandi per farlo da soli. Diamo un'occhiata a come eseguire il controllo ortografico nel modo "vecchia scuola Unix".

Controllo ortografico sulla riga di comando

In questi giorni, non crediamo nel correttore ortografico del nostro elaboratore di testi. Potrebbe anche non "eseguire" più un correttore ortografico. È più facile osservare la linea ondulata rossa che appare sotto le parole errate; se c'è una linea rossa sotto, Spelling corretto.

Agli albori di Unix, il sistema ha fornito un file dizionario (in genere /usr/share/dict/words sulla maggior parte dei sistemi Linux) che conteneva un elenco ordinato di parole del dizionario, con ogni parola su una riga da sola. Per il controllo ortografico di un documento, dovresti confrontare tutte le parole nel tuo documento con il file del dizionario. E per farlo, devi convertire il tuo documento in un formato che assomigli al file del dizionario: un elenco ordinato di parole, con ogni parola sulla sua riga.

Il file del dizionario è in minuscolo, quindi devi prima convertire il tuo documento per usare lettere minuscole. Lo fai con lui cat comando per visualizzare il file, e il tr comando per tradurre i caratteri da un set all'altro. Per questo caso, Puoi chiedere tr per convertire tutte le lettere maiuscole Arizona in lettere minuscole Arizona:

documento del gatto | tr A-Z a-z

Sebbene il dizionario includa la punteggiatura in parole come trattini e apostrofi, l'elenco delle parole non include la punteggiatura di frasi come punti e punti interrogativi. Quindi, il prossimo passo è usare tr, questa volta per rimuovere (-d) i personaggi che non vogliamo:

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

Il file del dizionario ha ciascuna parola su una riga da sola, quindi devi dividere il documento in modo che ogni parola appaia su una propria riga. il tr El comando puede reemplazar espacios con un carácter de “nuova linea”, per fare questo per noi:

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

L'ordinamento dell'output è facile con Unix sort comando. Aggiungi il uniq comando per pulire l'output, per rimuovere eventuali parole duplicate. Come esempio, probablemente use la palabra “il” varias veces en cualquier documento. Usando sort dopo uniq eliminará las instancias repetidas dethepara que solo tenga untheen su salida.

documento del gatto | tr A-Z a-z | tr -d ',.:;()?!' | tr ' ' 'n' | ordinare | unico

Ora sei pronto per confrontare l'elenco di parole nel tuo documento con il file del dizionario!! Il comando Unix standard comm confronta due file riga per riga e identifica le righe che sono univoche per il primo file, univoco per il secondo file o le righe comuni a entrambi. Per trovare l'elenco delle parole errate nel documento, vuoi l'elenco delle parole uniche: parole trovate nel tuo documento, ma non nel file del dizionario. Utilizzare il -2 opzione a no stampa le parole uniche dal secondo file, e il -3 opzione a no mostra le parole che sono comuni a entrambi i file. Ciò che rimane sono le parole uniche del tuo documento che non compaiono nel dizionario; queste sono parole errate.

documento del gatto | tr A-Z a-z | tr -d ',.:;()?!' | tr ' ' 'n' | ordinare | unico | comunicazione -2 -3 - /usr/share/dict/words

Il semplice script dice comm para leer de laentrada estándar”, che è l'output dei comandi precedenti sulla riga di comando.

Ed è così che si esegue il controllo ortografico alla "vecchia scuola Unix"!! Lascia che te lo mostri con un documento di esempio. Ho intenzionalmente sbagliato a scrivere alcune parole qui:

$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 del gatto | tr A-Z a-z | tr -d ',.:;()?!' | tr ' ' 'n' | ordinare | unico | comunicazione -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. Le due liste devono essere ordinate allo stesso modo. Su sistema Linux /usr/share/dict/words Il file potrebbe includere alcune parole maiuscole, come nomi comuni, titoli o luoghi. Come esempio, il file del dizionario sul mio sistema Fedora 32 contiene "Minnesota" (maiuscole corrette per il nome dello stato degli Stati Uniti. UU.) "Minnesota" (tutto in minuscolo) su linee adiacenti. Ma l'Unix sort Il comando ordina le lettere maiuscole separatamente dalle minuscole. Questo confonderà il comm comando, che si lamenterà che il file di input non è ordinato correttamente. Per abbinare meglio il metodo di controllo ortografico "vecchia scuola Unix", potrebbe essere necessario ordinare prima il file del dizionario del sistema e salvarlo in un file separato. Puoi farlo così:

sort /usr/share/dict/words > parole
Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.