A Linux rendezési parancs szabályai és példái

Adatok a Linux szöveges fájl rendezhető a sort paranccsal mindaddig, amíg az egyes elemek valamilyen módon el vannak határolva. Gyakran a vesszőt használják elválasztóként a körülhatárolt információkhoz.

Üzleti elemző dolgozik egy laptop
David Lees / Iconica / Getty Images

A válogatás alapvető szabályai

A sort parancs átrendezi a sorokat egy szövegfájlban, hogy a sorokat numerikusan és betűrendben rendezze. A sort parancs alapértelmezett szabályai a következők:

  • A számmal kezdődő szöveg a betűvel kezdődő szöveg előtt jelenik meg; az alacsonyabb számokat rendezze először.
  • Azok a szövegek, amelyek egy olyan betűvel kezdődnek, amely korábban jelenik meg az ábécében, mint a többi szövegbejegyzés első betűje, az ábécében később megjelenő betűvel kezdődő szöveg elé kerül sor.
  • Amikor szöveg Ugyanazon betű kis- és nagybetűivel kezdődik, először a kisbetűket rendezi a rendszer.

Szövegfájl rendezése

A sorok rendezéséhez egy elválasztott Linux-fájlban használja a rendezést parancs mint ez:

sort -k2 table1.txt

Ez a parancs rendezi a fájlt

táblázat1.txt a második oszloptól kezdődő karakterek szerint (k2 a második oszlopra vonatkozik). Feltéve, hogy a bemeneti fájl tartalma:

1, Justin, Timberlake, 545. cím, ára 7,30 USD
2, Taylor, Swift, 723. cím, ára 7,90 USD
3, Mick, Jagger, 610. cím, ára 7,90 USD
4, Lady, Gaga, 118. cím, ára 7,30 dollár
5, Johnny, készpénz, 482. cím, ára 6,50 USD
6, Elvis, Presley, 335. cím, ára 7,30 USD
7, John, Lennon, 271. cím, ára 7,90 USD
8, Michael, Jackson, 373. cím, ára 5,50 USD

Mivel a példa második oszlopa keresztneveket tartalmaz, a rendezett kimenet a második oszlopban lévő egyes személyek keresztnevének első betűje szerint van elrendezve, az alábbiak szerint:

6, Elvis, Presley, 335. cím, ára 7,30 USD
7, John, Lennon, 271. cím, ára 7,90 USD
5, Johnny, készpénz, 482. cím, ára 6,50 USD
1, Justin, Timberlake, 545. cím, ára 7,30 USD
4, Lady, Gaga, 118. cím, ára 7,30 dollár
8, Michael, Jackson, 373. cím, ára 5,50 USD
3, Mick, Jagger, 610. cím, ára 7,90 USD
2, Taylor, Swift, 723. cím, ára 7,90 USD

Ha a fájlt a -k3 (az oszloptól kezdődő sor tartalmát használva 3, a Vezetéknév oszlop), a kimenet a következő:

5, Johnny, készpénz, 482. cím, ára 6,50 USD
4, Lady, Gaga, 118. cím, ára 7,30 dollár
8, Michael, Jackson, 373. cím, ára 5,50 USD
3, Mick, Jagger, 610. cím, ára 7,90 USD
7, John, Lennon, 271. cím, ára 7,90 USD
6, Elvis, Presley, 335. cím, ára 7,30 USD
2, Taylor, Swift, 723. cím, ára 7,90 USD
1, Justin, Timberlake, 545. cím, ára 7,30 USD

és -k5 ár szerint rendezett listát készít:

4, Lady, Gaga, 118. cím, ára 7,30 dollár
7, John, Lennon, 271. cím, ára 7,90 USD
6, Elvis, Presley, 335. cím, ára 7,30 USD
8, Michael, Jackson, 373. cím, ára 5,50 USD
5, Johnny, készpénz, 482. cím, ára 6,50 USD
1, Justin, Timberlake, 545. cím, ára 7,30 USD
3, Mick, Jagger, 610. cím, ára 7,90 USD
2, Taylor, Swift, 723. cím, ára 7,90 USD

Várj, ez nem működött, igaz? Az ár szerinti rendezés helyett a parancs a címszám szerint rendezte a listát. Miért? Nos, hacsak nincs megadva az a határoló, amelynél minden sort oszlopokra kell bontani, szóközt használ. Mivel minden címbejegyzés közepén szóköz van, minden bejegyzés negyedik oszlopa a „Cím” szó lesz, az ötödik oszlop pedig a cím száma.

A -t kapcsolóval adja meg a rendezés elválasztóját. Ez pontosan szabályozza, hogy a parancs hol választja el az oszlopokat.

sort -t, -k5 table1.txt

Ez a kívánt eredményt hozza:

8, Michael, Jackson, 373. cím, ára 5,50 USD
5, Johnny, készpénz, 482. cím, ára 6,50 USD
1, Justin, Timberlake, 545. cím, ára 7,30 USD
4, Lady, Gaga, 118. cím, ára 7,30 dollár
6, Elvis, Presley, 335. cím, ára 7,30 USD
2, Taylor, Swift, 723. cím, ára 7,90 USD
3, Mick, Jagger, 610. cím, ára 7,90 USD
7, John, Lennon, 271. cím, ára 7,90 USD

Általában meg kell adni a határolót. Megakadályozza a nem kívánt zavart és a pontatlan eredményeket. Ez különösen igaz a nagyobb fájlokra, amelyek nem mindig nyilvánvalóan helytelenek.

Fordított rendezés

Az -r opció megfordítja a rendezést. Például a fenti eredmények felhasználásával:

sort -r -t, -k5 table1.txt

hozamok:

7, John, Lennon, 271. cím, ára 7,90 USD
3, Mick, Jagger, 610. cím, ára 7,90 USD
2, Taylor, Swift, 723. cím, ára 7,90 USD
6, Elvis, Presley, 335. cím, ára 7,30 USD
4, Lady, Gaga, 118. cím, ára 7,30 dollár
1, Justin, Timberlake, 545. cím, ára 7,30 USD
5, Johnny, készpénz, 482. cím, ára 6,50 USD
8, Michael, Jackson, 373. cím, ára 5,50 USD

Rendezett fájl mentése

A fájl rendezése nem menti el. A rendezett lista fájlba mentéséhez használja az átirányítási operátort:

sort -k6 tábla1.txt > teszt_új.txt

ahol teszt_új.txt az új fájl.

Stream-kimenet rendezése

Alkalmazhatja a sort parancsot egy adatfolyam kimenetére is, például a pipe operátorra:

ls -n | sort -t, -k5

Ez rendezi a fájllista által generált kimenetet ls parancs fájlméret szerint, kezdve a legnagyobb fájlokkal. Az -n operátor numerikus rendezést ad meg, nem pedig ábécé szerint.