Linux kārtošanas komandas noteikumi un piemēri

Dati a Linux teksta failu var kārtot ar kārtošanas komandu, ja katrs elements ir kaut kādā veidā norobežots. Bieži vien komats tiek izmantots kā norobežotas informācijas atdalītājs.

Biznesa analītiķis, kas strādā pie klēpjdatora
Deivids Lī / Iconica / Getty Images

Šķirošanas pamatnoteikumi

Komanda Kārtot pārkārto rindas teksta failā, lai kārtotu rindas skaitliski un alfabētiski. Kārtošanas komandas noklusējuma noteikumi ir:

  • Teksts, kas sākas ar ciparu, parādās pirms teksta, kas sākas ar burtu; vispirms kārto zemākus skaitļus.
  • Teksts, kas sākas ar burtu, kas alfabētā parādās agrāk nekā citu teksta ierakstu pirmais burts, tiek kārtots pirms teksta, kas sākas ar burtu, kas alfabētā parādās vēlāk.
  • Kad tekstu sākas ar viena un tā paša burta lielajiem un mazajiem burtiem, vispirms tiek sakārtoti mazie burti.

Kārtot teksta failu

Lai kārtotu līnijas norobežotā Linux failā, izmantojiet kārtošanu komandu kā šis:

kārtot -k2 tabula1.txt

Šī komanda sakārto failu tabula1.txt saskaņā ar rakstzīmēm, kas sākas ar otro kolonnu (k2 attiecas uz otro sleju). Pieņemot, ka ievades faila saturs ir:

1, Džastins, Timberleiks, nosaukums 545, cena 7,30 USD
2, Teilore, Svifta, nosaukums 723, cena 7,90 USD
3, Miks, Džegers, nosaukums 610, cena 7,90 USD
4, Lady, Gaga, nosaukums 118, cena 7,30 USD
5, Džonijs, skaidra nauda, ​​nosaukums 482, cena 6,50 USD
6, Elvis, Preslijs, nosaukums 335, cena 7,30 USD
7, Džons, Lenons, nosaukums 271, cena 7,90 USD
8, Maikls, Džeksons, nosaukums 373, cena 5,50 USD

Tā kā šī piemēra otrajā kolonnā ir vārdi, sakārtotā izvade tiek sakārtota pēc katras personas vārda pirmā burta otrajā kolonnā, kā parādīts tālāk:

6, Elvis, Preslijs, nosaukums 335, cena 7,30 USD
7, Džons, Lenons, nosaukums 271, cena 7,90 USD
5, Džonijs, skaidra nauda, ​​nosaukums 482, cena 6,50 USD
1, Džastins, Timberleiks, nosaukums 545, cena 7,30 USD
4, Lady, Gaga, nosaukums 118, cena 7,30 USD
8, Maikls, Džeksons, nosaukums 373, cena 5,50 USD
3, Miks, Džegers, nosaukums 610, cena 7,90 USD
2, Teilore, Svifta, nosaukums 723, cena 7,90 USD

Ja kārtojat failu ar -k3 (izmantojot rindas saturu, kas sākas ar kolonnu 3, kolonna Uzvārds), izvade ir:

5, Džonijs, skaidra nauda, ​​nosaukums 482, cena 6,50 USD
4, Lady, Gaga, nosaukums 118, cena 7,30 USD
8, Maikls, Džeksons, nosaukums 373, cena 5,50 USD
3, Miks, Džegers, nosaukums 610, cena 7,90 USD
7, Džons, Lenons, nosaukums 271, cena 7,90 USD
6, Elvis, Preslijs, nosaukums 335, cena 7,30 USD
2, Teilore, Svifta, nosaukums 723, cena 7,90 USD
1, Džastins, Timberleiks, nosaukums 545, cena 7,30 USD

un -k5 izveido sarakstu, kas sakārtots pēc cenas:

4, Lady, Gaga, nosaukums 118, cena 7,30 USD
7, Džons, Lenons, nosaukums 271, cena 7,90 USD
6, Elvis, Preslijs, nosaukums 335, cena 7,30 USD
8, Maikls, Džeksons, nosaukums 373, cena 5,50 USD
5, Džonijs, skaidra nauda, ​​nosaukums 482, cena 6,50 USD
1, Džastins, Timberleiks, nosaukums 545, cena 7,30 USD
3, Miks, Džegers, nosaukums 610, cena 7,90 USD
2, Teilore, Svifta, nosaukums 723, cena 7,90 USD

Pagaidiet, tas nedarbojās, vai ne? Tā vietā, lai kārtotu pēc cenas, komanda sakārtoja sarakstu pēc nosaukuma numura. Kāpēc? Ja vien nav norādīts norobežotājs, pie kura tai vajadzētu sadalīt katru rindiņu kolonnās, tas izmanto atstarpes. Tā kā katra nosaukuma ieraksta vidū ir atstarpe, katra ieraksta ceturtā kolonna kļūst par vārdu "Nosaukums" un piektā kolonna kļūst par nosaukuma numuru.

Izmantojiet karogu -t, lai norādītu šķirošanas atdalītāju. Tas kontrolē tieši to, kur komanda atdala kolonnas.

kārtot -t, -k5 tabula1.txt

Tas rada vēlamo rezultātu:

8, Maikls, Džeksons, nosaukums 373, cena 5,50 USD
5, Džonijs, skaidra nauda, ​​nosaukums 482, cena 6,50 USD
1, Džastins, Timberleiks, nosaukums 545, cena 7,30 USD
4, Lady, Gaga, nosaukums 118, cena 7,30 USD
6, Elvis, Preslijs, nosaukums 335, cena 7,30 USD
2, Teilore, Svifta, nosaukums 723, cena 7,90 USD
3, Miks, Džegers, nosaukums 610, cena 7,90 USD
7, Džons, Lenons, nosaukums 271, cena 7,90 USD

Parasti jūs vēlaties norādīt norobežotāju. Tas novērš nevēlamu apjukumu un neprecīzus rezultātus. Tas jo īpaši attiecas uz lielākiem failiem, kas ne vienmēr var būt acīmredzami nepareizi.

Apgrieztā šķirošana

The -r opcija maina šķirošanu. Piemēram, izmantojot iepriekš minētos rezultātus:

kārtot -r -t, -k5 tabula1.txt

raža:

7, Džons, Lenons, nosaukums 271, cena 7,90 USD
3, Miks, Džegers, nosaukums 610, cena 7,90 USD
2, Teilore, Svifta, nosaukums 723, cena 7,90 USD
6, Elvis, Preslijs, nosaukums 335, cena 7,30 USD
4, Lady, Gaga, nosaukums 118, cena 7,30 USD
1, Džastins, Timberleiks, nosaukums 545, cena 7,30 USD
5, Džonijs, skaidra nauda, ​​nosaukums 482, cena 6,50 USD
8, Maikls, Džeksons, nosaukums 373, cena 5,50 USD

Saglabājiet sakārtoto failu

Kārtojot failu, tas netiek saglabāts. Lai saglabātu sakārtoto sarakstu failā, izmantojiet novirzīšanas operatoru:

kārtot -k6 table1.txt > test_new.txt

kur test_new.txt ir jaunais fails.

Kārtot straumes izvadi

Varat arī lietot kārtošanas komandu straumes izvadei, piemēram, caurules operatoram:

ls -n | kārtot -t, -k5

Tas sakārto faila saraksta izvadi, ko ģenerē ls komandu pēc faila lieluma, sākot ar lielākajiem failiem. The -n operators norāda ciparu kārtošanu, nevis alfabētisku.