Я предполагаю, что в предоставленном вам файле данных есть окончания строк в стиле Windows (CR / LF), а не окончания строк в Unix / Linux (LF ).
Это альтернативное сопоставление с образцом исключает любой возможный завершающий CR:
[[ $line =~ ^SOME-PATTERN:[[:space:]](([^\015]*) ]]
authKey="${BASH_REMATCH[1]}"
@steeldriver дал более красноречивый ответ (говорят, что мы используем GNU version of sort
и хотели бы учитывать первые 6 знаков после запятой):
sort -g -k 3.1,3.6 -k 2.1,2.6 <example > sortedExample
что приводит к:
0 0.2401209140718633 0.02243994752564071
0 0.2667328325084663 0.02243994752564071
0 1.86630577374265 0.02243994752564048
На основании этого ответа:
Сначала мы обрезаем (скажем до 6-го знака после запятой )2-й и 3-й столбцы со следующими (На данный момент это было применено дважды для каждого столбца, я отредактирую свой ответ в курсе времени):
sed 's|\([0-9]\.[0-9]\{6\}\)[0-9]\{1,\}|\1|' example > interim
Затем вышеупомянутая команда:
sort -g -k 3,3 -k 2,2 <interim2 > sortedExample
Желаемый результат получается как:
0 0.240120 0.022439
0 0.266732 0.022439
0 1.866305 0.022439