У меня есть такой файл (user.csv)
ip,hostname,user,group,encryption,aduser,adattr
хотите распечатать всю сортировку столбцов по пользователю,
Я пробовал awk -F ":" '{print|"$3 sort -n"}' user.csv
, не работает.
У меня есть такой файл (user.csv)
ip,hostname,user,group,encryption,aduser,adattr
хотите распечатать всю сортировку столбцов по пользователю,
Я пробовал awk -F ":" '{print|"$3 sort -n"}' user.csv
, не работает.
Ответы:
Как насчет того, чтобы просто sort
.
sort -t, -nk3 user.csv
где
-t,
- определяет ваш разделитель как ,
.
-n
- дает вам числовую сортировку. Добавлено, так как вы добавили его в своей попытке. Если ваше пользовательское поле является только текстом, оно вам не нужно.
-k3
- определяет поле (ключ). пользователь - третье поле.
sort -t, -nk3 filename.csv | sort -t, -nk6
- сначала он будет отсортировать по столбцу 3, затем отсортирует его по столбцу 6, чтобы столбец 6 был правильно отсортирован полностью, а для любых строк, в которых столбец 6 такой же, они будут отсортированы по столбцу 3 .
sort -t ',' -k3,3n -k6,6n
будет лучше. -k3
будет использовать столбец 3 и оставшуюся часть строки.
Используйте sed, чтобы удалить повторяющийся идентификатор пользователя, при условии, что идентификаторы пользователей не содержат пробелов.
awk -F, '{ print $3, $0 }' user.csv | sort | sed 's/^.* //'
sort
уже знает, как сортировать по определенному столбцу, но этот метод, известный как преобразование Шварца , полезен, когда поле, по которому вы хотите выполнить сортировку, не является тривиальным четко определенным столбцом.
Вы можете выбрать разделитель, в этом случае я выбрал двоеточие и напечатал столбец номер один, отсортировав по алфавиту:
awk -F\: '{print $1|"sort -u"}' /etc/passwd
попробуй это -
awk '{print $0|"sort -t',' -nk3 "}' user.csv
ИЛИ
sort -t',' -nk3 user.csv
awk -F "," '{print $0}' user.csv | sort -nk3 -t ','
Это должно работать
sort -t, -k3 file