GNU/Linux >> Znalost Linux >  >> Linux

Třídit část souboru?

Jak mohu seřadit soubor podle druhého sloupce z terminálu. Obsah souboru je:

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

Pomocí sort -t' ' -nk2 mi nedává správný výsledek. Jak také mohu zajistit, aby obsah souboru zůstal seřazený?

Přijatá odpověď:

Myslím, že to, co hledáte, je něco takového:

Metoda č. 1:použití hlavy a ocasu

$ (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

Tím se zabere první řádek textového souboru, pak se vše za prvními 2 řádky omezí, což se následně seřadí.

Metoda č. 2:pouze pomocí hlavy

$ (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

Vezme textový soubor jako vstup, zobrazí pouze první řádek, zbytek seřadí.

Obvykle není dobrý nápad upravovat soubory na místě. Je to možné, ale lepší je použít přechodný soubor.

Metoda #3:Provedení #2 bez přechodného souboru

Když jste ukradli myšlenku od @StephaneChazelase, mohli byste udělat následující pomocí zápisu „1<>“ k otevření souboru pro čtení a zápis a vylepšení, která navrhl pomocí sort příkaz.

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

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

Linux
  1. Řazení souboru odděleného tabulátory

  2. Linux shell třídit soubor podle druhého sloupce?

  3. Třídění velikostí souborů čitelných pro člověka

  1. Třídit příkaz v Linuxu s příklady

  2. Pořadí přesměrování?

  3. cp-L vs. cp-H

  1. Zjistěte, jakého souborového systému je soubor nebo adresář součástí?

  2. sort Příklady příkazů v Linuxu

  3. sort:příkaz nenalezen