Saya memiliki file dua kolom dan n
jumlah baris.
kolom 1 berisi names
dan kolom2 age
.
Saya ingin mengurutkan konten file ini dalam urutan menaik berdasarkan pada age
(di kolom kedua).
Hasilnya harus menampilkan orang name
termuda bersama name
dan kemudian orang termuda kedua dan seterusnya ...
Setiap saran untuk skrip shell atau bash satu kapal.
Jawaban:
Anda dapat menggunakan
sort
perintah :Sebagai contoh:
sumber
-h
alih-alih-n
akan mengurutkan nilai yang dapat dibaca manusia seperti2G
atau3K
juga angka yang dipisahkan dengan koma misalnya1,234.5
LC_ALL=C
untuk mendapatkan urutan sortir tradisional yang menggunakan nilai byte asli." (untuk case match string tanpa-n
)sort -t$'\t' -k2 -n FILE
Larutan:
sort -k 2 -n filename
lebih banyak tertulis sebagai:
sort --key 2 --numeric-sort filename
Contoh:
Penjelasan:
-k # - argumen ini menentukan kolom pertama yang akan digunakan untuk mengurutkan. (perhatikan bahwa kolom di sini didefinisikan sebagai bidang dibatasi spasi putih; argumen
-k5
akan mengurutkan dimulai dengan bidang kelima di setiap baris, bukan karakter kelima di setiap baris)-n - opsi ini menentukan "jenis numerik" yang berarti kolom harus ditafsirkan sebagai deretan angka, bukan teks.
Lebih:
Pilihan umum lainnya termasuk:
Ada pilihan lain, tetapi ini adalah yang paling umum dan bermanfaat, yang sering saya gunakan.
sumber
-t
adalah penyelamat kehidupan nyata !! ketika kolom Anda memiliki spasi dan kolom berbeda dengan karakter yang diberikan seperti,
atau tabUntuk nilai yang dipisahkan tab, kode di bawah ini dapat digunakan
-r dapat digunakan untuk mendapatkan data dalam urutan menurun.
-n untuk pengurutan numerik
-k, --key = POS1 [, POS2] di mana k adalah kolom dalam file
Untuk urutan menurun di bawah ini adalah kode
sumber
Gunakan
sort
.sumber