У меня есть такой файл:
FirstName, FamilyName, Address, PhoneNumber
Как я могу отсортировать его по фамилии?
У меня есть такой файл:
FirstName, FamilyName, Address, PhoneNumber
Как я могу отсортировать его по фамилии?
Ответы:
Если это UNIX:
sort -k 2 file.txt
Вы можете использовать несколько -k
флагов для сортировки более чем по одному столбцу. Например, чтобы отсортировать по фамилии, затем имя в качестве разрешения конфликта:
sort -k 2,2 -k 1,1 file.txt
Актуальные варианты от "man sort":
-k, --key = POS1 [, POS2]
начать ключ в POS1, закончить его в POS2 (начало 1)
POS - это F [.C] [OPTS], где F - номер поля, а C - позиция символа в поле. OPTS - это одна или несколько однобуквенных опций упорядочивания, которые имеют приоритет над глобальными опциями упорядочивания для этого ключа. Если ключ не указан, используйте всю строку в качестве ключа.
-t, --field-separator = SEP
используйте SEP вместо перехода от непустого к пустому
--field-separator=','
если у вас может быть оператор ввода данных в значениях для «Имя», например «Билли Боб» или что-то еще ... пробелы могут легко попасть в ваши данные, если вы не защититесь от этого, но запятые относительно маловероятны.
-b
опцию. Это связано с тем, что sort
на самом деле считается, что строка для сортировки начинается сразу после запятой, а не с первой буквы столбца. Кроме того, вам может потребоваться префикс команды LC_ALL=C
, чтобы избежать побочных эффектов из-за локали, которые могут произойти даже с простым файлом ASCII.
-b
( --ignore-leading-blanks
). Чтобы немного уточнить: echo -e 'aa<SPACE>a\na<SPACE><SPACE>b' | sort -k2
дает a<SPACE><SPACE>b
первый (второй столбец начинается после первого non-blank to blank transition
и <SPACE><SPACE>b
находится перед <SPACE>a
), но с -b
ним дает, aa<SPACE>a
как ожидалось (было a
раньше b
).
FWIW, вот метод сортировки, показывающий, какие процессы используют наибольшую виртуальную память.
memstat | sort -k 1 -t':' -g -r | less
Параметры сортировки устанавливаются для первого столбца с использованием: в качестве разделителя столбцов, числовой сортировки и сортировки в обратном порядке.
sort -nk2 file.txt
Соответственно вы можете изменить номер столбца.