У меня есть файл из двух столбцов и n
количество строк.
столбец 1 содержит names
и column2 age
.
Я хочу отсортировать содержимое этого файла в порядке возрастания на основе age
(во втором столбце).
Результат должен отображать самого name
молодого человека, name
а затем второго самого молодого человека и так далее ...
Любые предложения для однострочного оболочки или скрипта bash.
Ответы:
Вы можете использовать
sort
команду :Например:
источник
-h
вместо-n
будет сортировать удобочитаемые значения, такие как2G
или,3K
а также числа, разделенные запятыми, например,1,234.5
LC_ALL=C
для получения традиционного порядка сортировки, который использует собственные значения байтов". (для случая совпадения строк без-n
)sort -t$'\t' -k2 -n FILE
Решение:
sort -k 2 -n filename
более подробно написано как:
sort --key 2 --numeric-sort filename
Пример:
Объяснение:
-k # - этот аргумент указывает первый столбец, который будет использоваться для сортировки. (обратите внимание, что столбец здесь определен как поле с пробелами; аргумент
-k5
будет сортироваться, начиная с пятого поля в каждой строке, а не с пятого символа в каждой строке)-n - эта опция указывает «числовую сортировку», означающую, что столбец должен интерпретироваться как строка чисел, а не текст.
Больше:
Другие распространенные варианты включают в себя:
Есть и другие варианты, но это самые распространенные и полезные, которые я часто использую.
источник
-t
был реальным спасителем жизни! когда в ваших столбцах есть пробелы, а столбцы отличаются заданным символом, например,
или табуляциейДля значений, разделенных табуляцией, можно использовать код ниже
-r может использоваться для получения данных в порядке убывания.
-n для числовой сортировки
-k, --key = POS1 [, POS2] где k - столбец в файле.
Ниже приведен код в порядке убывания
источник
Использование
sort
.источник