2012-09-17 12 views
8

Ho un file di testo di grandi dimensioni, contenente molte parole inglesi miss/bad-spelled. Sto cercando un modo per modificare questo file usando un correttore ortografico da riga di comando in Linux. Ho trovato alcuni modi per farlo, ma secondo le mie ricerche tutti funzionano in modo interattivo. Voglio dire, vedendo una parola miss/bad-spelled, suggeriscono alcune correzioni all'utente e lui/lei dovrebbe scegliere una di esse. Poiché il mio file è piuttosto grande e contiene molte parole sbagliate, non posso modificarlo in questo modo. Sto cercando un modo per dire al correttore ortografico che sostituisce tutte le parole sbagliate usando il primo candidato. C'è un modo per farlo? L'incantesimo (a/hun) ha qualche opzione per farlo?Controllo ortografico di un file utilizzando la riga di comando, non in modo interattivo

Saluti.

+0

emacs GNU ortografico modalità controllo sembra adattarsi il disegno di legge in quanto si può Replac e tutte le occorrenze scritte in modo errato contemporaneamente. –

+0

Quindi, devo aprire il file in emacs? – Hakim

+0

Sì, ma solo una volta. –

risposta

5

Se non si ha bisogno di sostituire ogni parola sbagliata, ma semplicemente evidenziare gli errori e suggerimenti di stampa in modo non interattivo, è possibile utilizzare ispell:

$ ispell -a < file.txt | grep ^\& > errors.txt 

Io purtroppo non sono consapevole di qualsiasi utility Linux standard che fa ciò che stai richiedendo dalla riga di comando, sebbene il suggerimento emacs nei commenti sopra si avvicini.

5

Si può sperimentare con i comandi come questi:

yes 0 | script -c 'ispell text.txt' /dev/null 

o:

yes 1 | script -c 'aspell check text.txt' /dev/null 

Ma tenere a mente che i risultati possono essere poveri, anche per le cose semplici:

$ echo The quik broown fox jmps over the laazy dogg > text.txt 
$ yes 0 | script -c 'ispell text.txt' /dev/null 
Script started, file is /dev/null 
Script done, file is /dev/null 
$ cat text.txt 
The quick brown fox amps over the lazy dog 

Sembra essere ancora peggio con Aspell, quindi probabilmente è meglio andare con ispell.

È necessario il comando script poiché alcuni comandi come ispell non devono essere sottoposti a script. Normalmente si pipe l'output di yes 0 ad un comando per simulare premendo il tasto "0" per tutto il tempo, ma alcuni comandi detect sia scritto e rifiuta di cooperare:

$ yes 0 | ispell text.txt 
Can't deal with non-interactive use yet. 

Fortunatamente possono essere ingannati con il comando script:

$ yes 0 | script -c 'ispell text.txt' /dev/null 
Script started, file is /dev/null 
Script done, file is /dev/null 

È possibile utilizzare un altro file di/dev/null per registrare l'output:

$ yes 0 | script -c 'ispell text.txt' out.txt 
Script started, file is out.txt 
Script done, file is out.txt 
$ cat out.txt 
Script started on Tue 02 Feb 2016 09:58:09 PM CET 

Script done on Tue 02 Feb 2016 09:58:09 PM CET 
Problemi correlati