Заставить команду сортировки GNU учитывать только первые N десятичных знаков

Я предполагаю, что в предоставленном вам файле данных есть окончания строк в стиле Windows (CR / LF), а не окончания строк в Unix / Linux (LF ).

Это альтернативное сопоставление с образцом исключает любой возможный завершающий CR:

[[ $line =~ ^SOME-PATTERN:[[:space:]](([^\015]*) ]]
authKey="${BASH_REMATCH[1]}"
0
04.04.2018, 16:07
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
0
28.01.2020, 04:26

Теги

Похожие вопросы