Кажется, есть несколько аккуратных и простых методов округления всех чисел в столбце до 1 знака после запятой, используя printf awk или даже printf bash. Однако я не могу найти столь же простого метода, чтобы просто уменьшить все числа в столбце до 1 знака после запятой (но не округлить вверх). Самый простой метод сортировки на данный момент — округлить до 2 знаков после запятой, а затем удалить последний символ из каждой строки в столбце 1. У кого-нибудь есть лучший метод для этого? Пример ввода и вывода будет следующим:
Вход
123.434
1456.8123
2536.577
345.95553
23643.1454
Выход
123.4
1456.8
2536.5
345.9
23643.1
решение1
достаточно легко сgrep
$ cat ip.txt
123.434
1456.8123
2536.577
345.95553
23643.1454
$ grep -o '^[0-9]*\.[0-9]' ip.txt
123.4
1456.8
2536.5
345.9
23643.1
^
начало строки[0-9]*
ноль или более цифр\.
соответствует буквальному символу точки[0-9]
сопоставьте цифру- поскольку используется
-o
опцияgrep
, печатается только совпавшая часть, фактически удаляя оставшиеся символы
Если есть другие столбцы, используйтеsed
$ cat ip.txt
123.434 a
1456.8123 b
2536.577 c
345.95553 d
23643.1454 e
$ sed -E 's/^([0-9]*\.[0-9])[0-9]*/\1/' ip.txt
123.4 a
1456.8 b
2536.5 c
345.9 d
23643.1 e
-E
использовать расширенное регулярное выражение- требуемый шаблон фиксируется
()
и\1
используется в разделе замены [0-9]*
после удаления группы захвата
Дальнейшее чтение: