У мене є такий файл (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