Bunun gibi bir dosyam (user.csv) var
ip,hostname,user,group,encryption,aduser,adattr
tüm sütun sıralamasını kullanıcıya göre yazdırmak istiyorsanız,
Denedim awk -F ":" '{print|"$3 sort -n"}' user.csv
, çalışmıyor.
Bunun gibi bir dosyam (user.csv) var
ip,hostname,user,group,encryption,aduser,adattr
tüm sütun sıralamasını kullanıcıya göre yazdırmak istiyorsanız,
Denedim awk -F ":" '{print|"$3 sort -n"}' user.csv
, çalışmıyor.
Yanıtlar:
Peki ya sadece sort
.
sort -t, -nk3 user.csv
nerede
-t,
- sınırlayıcınızı olarak tanımlar ,
.
-n
- size sayısal sıralama verir. Denemenize eklediğinizden beri eklendi. Kullanıcı alanınız yalnızca metin ise, ihtiyacınız yoktur.
-k3
- alanı (anahtar) tanımlar. kullanıcı üçüncü alandır.
sort -t, -nk3 filename.csv | sort -t, -nk6
- önce sütun 3'e göre sıralayacak, sonra bunu sütun 6'ya göre sıralayacaktır, böylece sütun 6 tamamen doğru sıralanır ve sütun 6'nın aynı olduğu tüm satırlar için bunlar sütun 3'e göre sıralanır .
sort -t ',' -k3,3n -k6,6n
daha iyi olacak. -k3
3. sütunu ve satırın geri kalanını kullanacaktır.
Kullanıcı kimliklerinin boşluk içermediğini varsayarak yinelenen kullanıcı kimliğini kaldırmak için sed kullanın.
awk -F, '{ print $3, $0 }' user.csv | sort | sed 's/^.* //'
sort
Belirli bir sütuna göre nasıl sıralama yapılacağını zaten biliyor, ancak Schwartzian dönüşümü olarak bilinen bu teknik , sıralamak istediğiniz alan önemsiz bir şekilde iyi tanımlanmış bir sütun olmadığında kullanışlıdır.
Bir sınırlayıcı seçebilirsiniz, bu durumda iki nokta üst üste seçtim ve alfabetik sıraya göre sıralayarak birinci sütunu yazdırdım:
awk -F\: '{print $1|"sort -u"}' /etc/passwd
bunu dene -
awk '{print $0|"sort -t',' -nk3 "}' user.csv
VEYA
sort -t',' -nk3 user.csv
awk -F "," '{print $0}' user.csv | sort -nk3 -t ','
Bu çalışmalı
sort -t, -k3 file