GNU/Linux >> Linux Esercitazione >  >> Linux

Come dividere un file di grandi dimensioni in parti a numeri di riga dati

Come amministratore Linux o utente avanzato, padroneggiare la gestione dei file in qualsiasi distribuzione del sistema operativo Linux in uso è fondamentale. La gestione dei file è un aspetto fondamentale dell'amministrazione del sistema operativo Linux e senza di essa non saremmo in grado di abbracciare funzionalità relative ai file come la crittografia dei file, la gestione degli utenti dei file, la conformità dei file, gli aggiornamenti e la manutenzione dei file e la gestione del ciclo di vita dei file.

In questo articolo, esamineremo un aspetto importante della gestione dei file di Linux che è la divisione di file di grandi dimensioni in parti con numeri di riga dati. Se l'obiettivo di questo articolo fosse solo quello di dividere un file di grandi dimensioni in file piccoli gestibili senza considerare i numeri di riga del file, tutto ciò di cui avremmo bisogno è la comodità della divisione comando.

File di riferimento di esempio

Affinché questo tutorial abbia senso, introdurremo un file di testo di esempio che funga da file di grandi dimensioni che desideriamo dividere da determinati numeri di riga. Crea un file di testo di esempio e compilalo come illustrato.

$ sudo nano sample_file.txt 

Apri questo file con il comando cat per annotare i numeri di riga associati:

$ cat -n sample_text.txt

Come hai notato, il file sopra ha 1 a 20 numeri di riga. Ora supponiamo di voler dividere questo file in 4 parti ai numeri di riga 5 , 11 e 17 .

Risulteremmo con i seguenti file:

  • file_1 contenente le righe da 1 a 5 di sample_file.txt.
  • file_2 contenente le righe da 6 a 11 di sample_file.txt.
  • file_3 contenente le righe da 12 a 17 di sample_file.txt.
  • file_4 contenente le righe da 18 a 20 di sample_file.txt.

Ora che abbiamo compreso la nostra affermazione del problema, è tempo di esaminare le metodologie necessarie per una soluzione praticabile.

1. Usare i comandi testa e coda

L'efficacia della combinazione di questi due comandi per dividere un file di grandi dimensioni in parti dai numeri di riga forniti richiede l'inclusione di -n opzione come parte dell'esecuzione del comando.

Per estrarre i numeri di riga 6 a 11 , eseguiremo il seguente comando.

$ tail -n +3 sample_file.txt | head -n $(( 11-6+1 ))

Per salvare questo output in file_2.txt :

$ tail -n +6 sample_file.txt | head -n $((11-6+1)) > file_2.txt
$ cat file_2.txt

2. Usando il comando sed

Dal sed il comando supporta due intervalli di indirizzi dati, possiamo estrarre le righe 12 a 17 nel modo seguente.

$ sed -n '12,17p; 18q' sample_file.txt

Possiamo modificare il comando per salvare l'output sopra in file_3.txt .

$ sed -n '12,17p; 18q' sample_file.txt > file_3.txt
$ cat file_3.txt

3. Utilizzo del comando awk

Il awk comando supporta numerose funzionalità come reindirizzamento, loop e array. Pertanto, possiamo usarlo per creare tutte le parti di file necessarie (file_1.txt , file_2.txt , file_3.txt e file_4.txt ) da un file di grandi dimensioni (file_campione.txt ) con un'unica frase di comando come illustrato di seguito.

Il awk Il comando viene fornito con i numeri di riga della chiave (5 , 11 e 17 ) necessario per dividere file_campione.txt in quattro parti (file_1.txt , file_2.txt , file_3.txt e file_4.txt ).

$ awk -v nums="5 11 17" '
      BEGIN {
          c=split(nums,b)
          for(i=1; i<=c; i++) a[b[i]] j=1; out = "file_1.txt" } { print > out }
      NR in a {
          close(out)
          out = "file_" ++j ".txt"
      }' sample_file.txt

Il risultato dell'esecuzione di awk sopra il comando è evidente nella schermata seguente.

Ora possiamo dividere comodamente file di grandi dimensioni in parti in base ai numeri di riga forniti attraverso vari approcci, come illustrato in questo tutorial.

Potresti anche leggere i seguenti articoli correlati:

  • Come eseguire Gzip di file di grandi dimensioni (oltre 100 GB) più velocemente in Linux
  • Come creare un file di grandi dimensioni da 1 GB o 10 GB in Linux
  • Come copiare un gran numero di file in Linux

Linux
  1. Come dividere l'archivio "tar" di grandi dimensioni in più file di determinate dimensioni

  2. Come dividere un file e mantenere la prima riga in ciascuno dei pezzi?

  3. Come dividere un file di testo in più file *.txt?

  4. come copiare le righe da 10 a 15 di un file in un altro file, in unix?

  5. unix - divide un enorme file .gz per riga

Come dividere file audio di grandi dimensioni su Linux

Come dividere un file di archivio di grandi dimensioni in più file di piccole dimensioni utilizzando il comando Dividi in Linux

Come dividere un file di archivio di grandi dimensioni in più file di piccole dimensioni utilizzando il comando Dividi in Linux

Come dividere un file Mp3?

Come fare eco in un file

Come mostrare i numeri di riga in Gedit