Округлить в меньшую сторону/обрезать десятичные знаки в столбце

Округлить в меньшую сторону/обрезать десятичные знаки в столбце

Кажется, есть несколько аккуратных и простых методов округления всех чисел в столбце до 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]*после удаления группы захвата

Дальнейшее чтение:

Связанный контент