Come visualizzare file di testo di grandi dimensioni tramite Vi o gedit


24

Ho generato un wordlist.txt11 GB di crunch-3.6. Quando provo ad aprire il file con Vi o gedit, incontro problemi a causa delle dimensioni del file. Come posso visualizzare questo file?


8
Non penso sia un duplicato. Sebbene sia strettamente correlato e alcune risposte potrebbero essere utili, questo riguarda la visualizzazione e non la modifica. La risposta accettata non è utile per la visualizzazione.
pLumo,

1
Sono d'accordo. La visualizzazione di un file e la modifica di un file non sono la stessa cosa e la distinzione diventa più importante solo quando il file è molto grande.
Eliah Kagan,

Risposte:


43

Non utilizzare un editor di testo per visualizzare il testo.

Ci sono strumenti migliori:


Visualizza i file con less(Scorri con Spazio, Fine, Home, Pagina su, Pagina giù; Cerca con "/ qualcosa"; Lascia con q).

Dal lessmanuale:

Less non deve leggere l'intero file di input prima di iniziare, quindi con file di input di grandi dimensioni si avvia più velocemente degli editor di testo come vi (1).

Uso:

less wordlist.txt

Considera l'uso di less -n:

-n o --line-numbers:

Elimina i numeri di riga. L'impostazione predefinita (per utilizzare i numeri di riga) potrebbe causare l'esecuzione più lenta in alcuni casi, in particolare con un file di input molto grande. La soppressione dei numeri di riga con l' -nopzione eviterà questo problema.

(grazie per aver suggerito l'opzione -n ​​@pipe)


Usa grepper ottenere solo le linee che ti interessano:

# Show all Lines beginning with A:
grep "^A:"  wordlist.txt

# Show all Lines ending with x and use less for better viewing
grep "x$"  wordlist.txt | less

Utilizzare heado tailper ottenere la prima o l'ultima riga

head wordlist.txt
tail -n 200 wordlist.txt

Per la modifica del testo, fare riferimento a questa domanda .


4
Si noti che morecaricherà l'intero file in memoria, a differenza less. Se è così grande, ti sconsiglio di usarlo. L'opzione migliore sarebbe sicuramente quella di utilizzare grep.
Nepho,

1
Il mio commento potrebbe effettivamente essere falso. Ho cominciato a controllare sia moree lesscodice sorgente, ed entrambi sembrano utilizzare uno openo fopen, che non cambia nulla per quanto riguarda il modo in cui il file viene caricato, per quanto ne so
Nepho

2
Concordato. moreè un'utilità molto datata, se lessdisponibile non penso a nessun motivo per cui lo useresti more.
Nepho,

1
@Nepho, moreha un enorme vantaggio rispetto less: non supporta il LESSOPENpreprocessore di input. Se stai cercando di visualizzare il testo non elaborato di una pagina man o qualcosa del genere, è molto più veloce digitare more my_docs.manche scavare nella lessdocumentazione per capire come sopprimere il preprocessore.
Segna il

1
Suggerisco di invocare meno utilizzando qualcosa di simile less -nSa file di grandi dimensioni, per accelerare un po 'le cose.
pipe,

10

Spesso, basta "grep" per trovare ciò di cui hai bisogno.

Se hai bisogno di più "contesto" attorno a una particolare linea, usa "grep -n" per trovare i numeri di linea delle linee di interesse, quindi usa sed per stampare un "pezzo" del file attorno a quella linea:

$ grep -n 'word' file 
123:A line with with word in it 

$ sed -n '120,125p' file 
A line 
Another line
The line before
A line with with word in it 
The line after
Something else

10
non c'è bisogno di sed, è possibile utilizzare grep -Be -A stampare le righe B efore e A
fter

7
@RoVo O -Cper un pezzo C (sia prima che dopo).
wjandrea,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.