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