Mam taki plik (user.csv)
ip,hostname,user,group,encryption,aduser,adattr
chcesz wydrukować całą kolumnę posortowaną według użytkownika,
Próbowałem awk -F ":" '{print|"$3 sort -n"}' user.csv
, to nie działa.
Mam taki plik (user.csv)
ip,hostname,user,group,encryption,aduser,adattr
chcesz wydrukować całą kolumnę posortowaną według użytkownika,
Próbowałem awk -F ":" '{print|"$3 sort -n"}' user.csv
, to nie działa.
Odpowiedzi:
Może po prostu sort
.
sort -t, -nk3 user.csv
gdzie
-t,
- definiuje twój separator jako ,
.
-n
- umożliwia sortowanie numeryczne. Dodano, ponieważ dodałeś go w swojej próbie. Jeśli twoje pole użytkownika jest tylko tekstowe, nie potrzebujesz go.
-k3
- określa pole (klucz). user to trzecie pole.
sort -t, -nk3 filename.csv | sort -t, -nk6
- najpierw posortuje według kolumny 3, a następnie posortuje to według kolumny 6, aby kolumna 6 była poprawnie posortowana w całości i dla wszystkich wierszy, w których kolumna 6 jest taka sama, zostaną posortowane według kolumny 3 .
sort -t ',' -k3,3n -k6,6n
będzie lepszy. -k3
użyje kolumny 3 i reszty wiersza.
Użyj seda, aby usunąć zduplikowany identyfikator użytkownika, zakładając, że identyfikatory użytkowników nie zawierają spacji.
awk -F, '{ print $3, $0 }' user.csv | sort | sed 's/^.* //'
sort
już wie, jak sortować według określonej kolumny, ale ta technika - znana jako transformata Schwartziana - jest przydatna, gdy pole, według którego chcesz sortować, nie jest w trywialnym przypadku dobrze zdefiniowaną kolumną.
Możesz wybrać separator, w tym przypadku wybrałem dwukropek i wydrukowałem kolumnę numer jeden, sortując w kolejności alfabetycznej:
awk -F\: '{print $1|"sort -u"}' /etc/passwd
Spróbuj tego -
awk '{print $0|"sort -t',' -nk3 "}' user.csv
LUB
sort -t',' -nk3 user.csv
awk -F "," '{print $0}' user.csv | sort -nk3 -t ','
To powinno działać
sort -t, -k3 file