Сортировка данных на основе значения во втором столбце файла

У меня есть файл из двух столбцов и n количество строк.

столбец 1 содержит names и column2 age.

Я хочу сортировать содержимое этого файла в порядке возрастания на основе age (во втором столбце).

В результате должен отображаться name самого молодого человека вместе с name, а затем вторым младшим человеком и т.д.

Любые предложения для одной оболочки оболочки или bash script.

Ответ 1

Вы можете использовать команду sort:

sort -k2 -n yourfile

Например:

$ cat ages.txt 
Bob 12
Jane 48
Mark 3
Tashi 54
$ sort -k2 -n ages.txt 
Mark 3
Bob 12
Jane 48
Tashi 54

Ответ 2

Решение:

sort -k 2 -n filename

более подробное описание:

sort --key 2 --numeric-sort filename


Пример:

$ cat filename
A 12
B 48
C 3

$ sort --key 2 --numeric-sort filename 
C 3
A 12
B 48

Объяснение:

  • -k # - этот аргумент указывает, какой столбец будет использоваться для сортировки.

  • -n - этот параметр указывает "числовую сортировку", означающую, что столбец должен быть помечен как строка чисел вместо текста.


Дополнительно:

Другие распространенные опции:

  • -r - эта опция отменяет порядок сортировки. Его также можно записать как - reverse.
  • -i - этот параметр игнорирует печатные символы. Его также можно записать как - игнорировать-непечататься.
  • -b - этот параметр игнорирует ведущие пробелы, что удобно, поскольку пробелы используются для определения количества строк. Его также можно записать как - ignore-leading-blank.
  • -f - этот параметр игнорирует регистр букв. "А" == "а". Его также можно записать как - игнорировать-case.
  • -t. Этот параметр делает предварительную обработку использованием оператора, отличного от места. Он также может быть записан как -field-separator.

Существуют и другие варианты, но это наиболее распространенные и полезные, которые я часто использую.

Ответ 3

Используйте sort.

sort ... -k 2,2 ...