GNU/Linux >> Linux Esercitazione >  >> Linux

Ordinare parte di un file?

Come posso ordinare il file in base alla seconda colonna dal terminale. Il contenuto del file è:

Nome     Note
------------
Mehdi    0
Sunday   20
Others   10
Shnou    5

Usando sort -t' ' -nk2 non mi sta dando il giusto risultato. Inoltre, come posso assicurarmi che il contenuto del file rimanga ordinato?

Risposta accettata:

Penso che quello che stai cercando sia qualcosa del genere:

Metodo n. 1:usare testa e coda

$ (head -n 2 sample.txt; tail -n +3 sample.txt | sort -t' ' -nk2) > a.tmp && mv a.tmp sample.txt

Nome     Note
------------
Mehdi    0
Shnou    5
Others   10
Sunday   20

Questo prende la prima riga del file di testo, quindi esegue la coda di tutto dopo le prime 2 righe che vengono quindi ordinate.

Metodo n. 2:usando solo la testa

$ (head -n 2; sort -t' ' -nk2) < sample.txt > a.tmp && mv a.tmp sample.txt

Nome     Note
------------
Mehdi    0
Shnou    5
Others   10
Sunday   20

Prende il file di testo come input, mostra solo la prima riga, ordina il resto.

In genere non è una buona idea modificare i file sul posto. È possibile, ma meglio utilizzare un file intermedio.

Metodo n. 3:fare n. 2 senza un file intermedio

Rubando l'idea a @StephaneChazelas potresti fare quanto segue usando la notazione "1<>" per aprire un file per la lettura e la scrittura e i miglioramenti che ha suggerito con il sort comando.

$ (head -n 2; sort -nk2) < sample.txt 1<> sample.txt

Nome     Note
------------
Mehdi    0
Shnou    5
Others   10
Sunday   20

Linux
  1. Ordine di reindirizzamento?

  2. ordina Esempi di comandi in Linux

  3. ordina:comando non trovato

  4. Come ordinare un file sul posto

  5. cp -L contro cp -H

Script della shell Parte 3:Strutture di controllo delle decisioni negli script della shell

Utili plugin per editor Vim per sviluppatori di software - parte 3:a.vim

Tutto è un file in Linux – Parte 2

Tutto è file in Linux – Parte 1

Editor VIM

Comandi Linux usati frequentemente dagli amministratori di sistema Linux – Parte 5