GNU/Linux >> Linux Esercitazione >  >> Linux

Come visualizzare determinate righe da un file di testo in Linux?

Soluzione 1:

sed -n '10000000,10000020p' filename

Potresti essere in grado di velocizzarlo un po' in questo modo:

sed -n '10000000,10000020p; 10000021q' filename

In quei comandi, l'opzione -n provoca sed per "sopprimere la stampa automatica dello spazio pattern". Il p comando "stampa[s] lo spazio del pattern corrente" e il q comando "Esci immediatamente dallo script sed senza elaborare altri input..." Le virgolette sono tratte dal sed man pagina.

A proposito, il tuo comando

tail -n 10000000 filename | head 10

inizia dalla decimilionesima riga dalla fine del file, mentre il tuo comando "intermedio" sembrerebbe iniziare dal diecimilionesimo dall'inizio che sarebbe equivalente a:

head -n 10000010 filename | tail 10

Il problema è che per i file non ordinati con righe di lunghezza variabile qualsiasi processo dovrà passare attraverso il conteggio delle nuove righe. Non c'è modo di scorciatoia.

Se, tuttavia, il file è ordinato (ad esempio un file di registro con timestamp) o ha righe di lunghezza fissa, è possibile cercare nel file in base alla posizione di un byte. Nell'esempio del file di registro, puoi eseguire una ricerca binaria per un intervallo di volte come fa il mio script Python qui*. Nel caso del file a lunghezza record fissa, è davvero facile. Cerchi solo linelength * linecount caratteri nel file.

Soluzione 2:

Ho scoperto il seguente uso di sed

sed -n '10000000,+20p'  filename

Spero sia utile a qualcuno!

Soluzione 3:

Questa è la prima volta che scrivo qui! Comunque, questo è facile. Supponiamo che tu voglia estrarre la riga 8872 dal tuo file chiamato file.txt. Ecco come farlo:

cat -n file.txt | grep '^ *8872'

Ora la domanda è trovare 20 righe dopo questo. Per fare ciò fai

cat -n file.txt | grep -A 20 '^ *8872'

Per le righe attorno o prima, vedere i flag -B e -C nel manuale di grep.


Linux
  1. Come aggiungere testo alla fine del file in Linux

  2. Come aggiungere facilmente testo alla fine del file in Linux

  3. Come visualizzare righe specifiche di un file nella riga di comando di Linux

  4. Come distinguere il binario dai file di testo in Linux

  5. Come rimuovo le nuove righe da un file di testo?

Come mescolare le linee in un file in Linux

Come estrarre indirizzi e-mail da file di testo in Linux

Come aggiungere testo all'inizio del file in Linux

Come invertire le righe in un file in base al carattere in Linux

Come rimuovere (^M) caratteri da un file in Linux

Come trovare le righe più lunghe in un file in Linux