Jika Anda pernah menggunakan aplikasi spreadsheet, maka Anda tahu bahwa baris dapat diurutkan berdasarkan isi kolom. Misalnya, jika Anda memiliki daftar pengeluaran, Anda mungkin ingin mengurutkannya menurut tanggal atau menurut harga naik atau menurut kategori, dan seterusnya. Jika Anda nyaman menggunakan terminal, Anda mungkin tidak ingin harus menggunakan aplikasi kantor besar hanya untuk menyortir data teks. Dan itulah yang sortir perintah untuk.
Memasang
Lebih banyak sumber daya Linux
- Lembar contekan perintah Linux
- Lembar contekan perintah Linux tingkat lanjut
- Kursus online gratis:Ikhtisar Teknis RHEL
- Lembar contekan jaringan Linux
- Lembar contekan SELinux
- Lembar contekan perintah umum Linux
- Apa itu container Linux?
- Artikel Linux terbaru kami
Anda tidak perlu memasang sort karena selalu disertakan pada sistem POSIX apa pun. Pada kebanyakan sistem Linux, sort perintah dibundel dalam kumpulan utilitas dari organisasi GNU. Pada sistem POSIX lainnya, seperti BSD dan Mac, default sort perintah bukan dari GNU, jadi beberapa opsi mungkin berbeda. Saya akan mencoba menjelaskan implementasi GNU dan BSD dalam artikel ini.
Urutkan baris menurut abjad
mengurutkan perintah, secara default, melihat karakter pertama dari setiap baris file dan menampilkan setiap baris dalam urutan abjad menaik. Jika dua karakter pada beberapa baris sama, itu mempertimbangkan karakter berikutnya. Misalnya:
$ cat distro.list
Slackware
Fedora
Red Hat Enterprise Linux
Ubuntu
Arch
1337
Mint
Mageia
Debian
$ sort distro.list
1337
Arch
Debian
Fedora
Mageia
Mint
Merah Hat Enterprise Linux
Slackware
Ubuntu
Menggunakan sortir tidak mengubah file asli. Sortir adalah filter, jadi jika Anda ingin menyimpan data Anda dalam bentuk yang diurutkan, Anda harus mengarahkan output menggunakan > atau kaos :
$ sort distro.list | tee distro.sorted
1337
Arch
Debian
[...]
$ cat distro.sorted
1337
Arch
Debian
[...]
Urutkan menurut kolom
Kumpulan data yang kompleks terkadang perlu diurutkan berdasarkan sesuatu selain huruf pertama dari setiap baris. Bayangkan, misalnya, daftar hewan dan spesies dan genus masing-masing, dan setiap "bidang" ("sel" dalam spreadsheet) ditentukan oleh karakter pembatas yang dapat diprediksi. Ini adalah format data yang umum untuk ekspor spreadsheet sehingga ekstensi file CSV (comma-separated values) ada untuk mengidentifikasi file tersebut (meskipun file CSV tidak harus dipisahkan koma, file yang dipisahkan juga tidak harus menggunakan ekstensi CSV agar valid dan dapat digunakan). Perhatikan contoh kumpulan data ini:
Aptenodytes;forsteri;Miller,JF;1778;Kaisar
Pygoscelis;papua;Wagler;1832;Gentoo
Eudyptula;minor;Bonaparte;1867;Biru Kecil
Spheniscus;demersus;Brisson;1760;Afrika
Megadyptes;antipodes;Milne-Edwards;1880;Mata kuning
Eudyptes;chrysocome;Viellot;1816;Southern Rockhopper
Torvaldis;linux;Ewing,L;1996;Tux
Dengan kumpulan data sampel ini, Anda dapat menggunakan --field-separator (gunakan -t pada BSD dan Mac—atau pada GNU untuk mengurangi pengetikan) opsi untuk menyetel karakter pembatas menjadi titik koma (karena contoh ini menggunakan titik koma, bukan koma, tetapi bisa menggunakan karakter apa pun), dan menggunakan --key (-k pada BSD dan Mac atau pada GNU untuk mengurangi pengetikan) opsi untuk menentukan bidang mana yang akan diurutkan. Misalnya, untuk mengurutkan berdasarkan bidang kedua (dimulai dari 1, bukan 0) dari setiap baris:
sort --field-separator=";" --key=2
Megadyptes;antipoda;Milne-Edwards;1880;Mata kuning
Eudyptes;chrysocome;Viellot;1816;Sothern Rockhopper
Spheniscus;demersus;Brisson;1760;Afrika
Aptenodytes;forsteri;Miller,JF;1778;Kaisar
Torvaldis;linux;Ewing,L;1996;Tux
Eudyptula;minor;Bonaparte;1867;Little Blue
Pygoscelis;papua;Wagler;1832;Gentoo
Agak sulit untuk dibaca, tetapi Unix terkenal dengan pipa metode pembuatan perintah, sehingga Anda dapat menggunakan kolom perintah untuk "mempercantik" output. Menggunakan GNU kolom :
$ sort --field-separator=";" \
--key=2 penguin.list | \
column --table --separator ";"
Megadyptes antipodes Milne-Edwards 1880 Yellow-eyes
Eudyptes chrysocome Viellot 1816 Southern Rockhopper > Aptenyodytes Forsteri Miller, JF 1778 Kaisar
Torvaldis Linux Ewing, L 1996 Tux
Eudyptula Minor Bonaparte 1867 Little Blue
Pygoscelis Papua Wagler 1832 Gentoo
Sedikit lebih samar bagi pengguna baru (tetapi lebih pendek untuk mengetik), opsi perintah pada BSD dan Mac:
$ sort -t ";" \
-k2 penguin.list | Kolom -t -t -s ";"
Megadyptes Antipode Milne-Edwards 1880 Kuning-Eyed
Eudyptes Chrysocome Viellot 1816 Southern Rockhopper
Spheniscus Demersus Brisson 1760 Afrika
Aptenodytes Forsteri Miller, JF 1778 Kaisar
Torvaldis linux Ewing,L 1996 Tux
Eudyptula minor Bonaparte 1867 Biru Kecil
Pygoscelis papuaKunci definisi tidak harus disetel ke 2 , tentu saja. Bidang apa pun yang ada dapat digunakan sebagai kunci pengurutan.
Urutan terbalik
Anda dapat membalik urutan daftar yang diurutkan dengan --reverse (-r di BSD atau Mac atau GNU untuk singkatnya):
$ sort --reverse alphabet.list
z
y
x
w
[...]Anda dapat mencapai hasil yang sama dengan menyalurkan output dari sort through tac yang normal.
Mengurutkan berdasarkan bulan (khusus GNU)
Di dunia yang sempurna, setiap orang akan menulis tanggal menurut standar ISO 8601:tahun, bulan, hari. Ini adalah metode logis untuk menentukan tanggal yang unik, dan mudah dipahami oleh komputer. Namun cukup sering, manusia menggunakan cara lain untuk mengidentifikasi tanggal, termasuk bulan dengan nama yang cukup arbitrer.
Untungnya, GNU sort perintah bertanggung jawab untuk ini dan dapat mengurutkan dengan benar berdasarkan nama bulan. Gunakan --month-sort (-M ) pilihan:
$ cat month.list
November
Oktober
September
April
[...]
$ sort --month-sort bulan. daftar
Januari
Februari
Maret
April
Mei
[...]
November
DesemberBulan dapat diidentifikasi dengan nama lengkap mereka atau sebagian dari nama mereka.
Urutan numerik yang dapat dibaca manusia (khusus GNU)
Titik kebingungan umum lainnya antara manusia dan komputer adalah kelompok angka. Misalnya, manusia sering menulis "1024 kilobyte" sebagai "1KB" karena lebih mudah dan lebih cepat bagi otak manusia untuk mengurai "1KB" daripada "1024" (dan semakin mudah semakin besar angkanya). Namun, untuk komputer, string seperti 9KB lebih besar dari, misalnya, 1MB (walaupun 9KB hanya sebagian kecil dari megabita). GNU sort perintah menyediakan --human-numeric-sort (-h ) untuk membantu mengurai nilai-nilai ini dengan benar.
$ daftar ukuran kucing
2M
12MB
1k
9k
900
7000
$ sort --human-numeric- sort
900
7000
1rb
9rb
2M
12MBAda beberapa inkonsistensi. Misalnya, 16.000 byte lebih besar dari 1 KB, tetapi sort gagal mengenali bahwa:
$ cat size0.list
2M
12MB
16000
1k
$ sort -h size0.list
16000
1k
2M
12MBLogikanya, 16.000 harus ditulis 16KB dalam konteks ini, jadi GNU sort tidak sepenuhnya disalahkan. Selama Anda yakin bahwa angka Anda konsisten, --human-numeric-sort dapat membantu mengurai angka yang dapat dibaca manusia dengan cara yang ramah komputer.
Urutan secara acak (khusus GNU)
Terkadang utilitas menyediakan opsi untuk melakukan kebalikan dari apa yang seharusnya mereka lakukan. Di satu sisi, tidak masuk akal untuk sortir perintah untuk memiliki kemampuan untuk "mengurutkan" file secara acak. Kemudian lagi, alur kerja perintah menjadikannya fitur yang nyaman untuk dimiliki. Anda bisa gunakan perintah yang berbeda, seperti shuf , atau Anda bisa menambahkan opsi ke perintah yang Anda gunakan. Baik itu desain UX yang besar atau cerdik, GNU sort perintah menyediakan sarana untuk mengurutkan file secara sewenang-wenang.
Bentuk paling murni dari pengurutan arbitrer adalah --random-sort atau -R opsi (jangan bingung dengan -r opsi, yang merupakan kependekan dari --reverse ).
$ sort --random-sort alphabet.list
d
m
p
a
[...]Anda dapat menjalankan pengurutan acak beberapa kali pada file untuk hasil yang berbeda setiap kali.
Diurutkan
Ada lebih banyak fitur yang tersedia dengan sort Perintah GNU dan BSD, jadi luangkan waktu untuk mengetahui opsinya. Anda akan terkejut melihat betapa fleksibelnya sortir bisa, terutama jika digabungkan dengan utilitas Unix lainnya.
Kisah Linux Saya:Mengapa orang mengenalkan Raspberry Pi Jaringan Kubernetes, Kereta OpenStack, dan tren industri lainnyaLinux