Saya memiliki file (user.csv) seperti ini
ip,hostname,user,group,encryption,aduser,adattr
ingin mencetak semua kolom urutkan berdasarkan pengguna,
Saya mencoba awk -F ":" '{print|"$3 sort -n"}' user.csv
, itu tidak berhasil.
Saya memiliki file (user.csv) seperti ini
ip,hostname,user,group,encryption,aduser,adattr
ingin mencetak semua kolom urutkan berdasarkan pengguna,
Saya mencoba awk -F ":" '{print|"$3 sort -n"}' user.csv
, itu tidak berhasil.
Jawaban:
Bagaimana dengan adil sort
.
sort -t, -nk3 user.csv
dimana
-t,
- mendefinisikan pembatas Anda sebagai ,
.
-n
- memberi Anda urutan numerik. Ditambahkan sejak Anda menambahkannya dalam upaya Anda. Jika bidang pengguna Anda hanya teks maka Anda tidak membutuhkannya.
-k3
- mendefinisikan bidang (kunci). pengguna adalah bidang ketiga.
sort -t, -nk3 filename.csv | sort -t, -nk6
- pertama-tama akan mengurutkan berdasarkan kolom 3, kemudian akan mengurutkannya berdasarkan kolom 6 sehingga kolom 6 diurutkan dengan benar sepenuhnya dan untuk setiap baris yang kolom 6 sama, itu akan diurutkan berdasarkan kolom 3 .
sort -t ',' -k3,3n -k6,6n
akan lebih baik. -k3
akan menggunakan kolom 3 dan sisa baris.
Gunakan sed untuk menghapus ID pengguna duplikat, dengan asumsi ID pengguna tidak mengandung spasi.
awk -F, '{ print $3, $0 }' user.csv | sort | sed 's/^.* //'
sort
sudah mengetahui cara mengurutkan berdasarkan kolom tertentu, tetapi teknik ini - yang dikenal sebagai transformasi Schwartzian - berguna jika bidang yang ingin Anda sortir bukan merupakan kolom yang terdefinisi dengan baik.
Anda dapat memilih pembatas, dalam hal ini saya memilih titik dua dan mencetak kolom nomor satu, mengurutkan berdasarkan urutan abjad:
awk -F\: '{print $1|"sort -u"}' /etc/passwd
coba ini -
awk '{print $0|"sort -t',' -nk3 "}' user.csv
ATAU
sort -t',' -nk3 user.csv
awk -F "," '{print $0}' user.csv | sort -nk3 -t ','
Ini seharusnya berhasil
sort -t, -k3 file