Как усечь действительное значение и отбросить его нецелую часть в awk?

У меня есть следующий набор данных (все положительные значения)

Входной файл

1 2.3456
1 5.02
2 3.9763333
2 0.123

Я хотел бы усечь числа во втором столбце и отбросить его нецелую часть.

Как это сделать в awk?

Желаемый выходной файл

1 2
1 5
2 3
2 0

Спасибо за вашу помощь.

Ответы

Ответ 1

попробуйте функцию int()

awk '{$2=int($2)}1' file

Ответ 2

awk '{printf("%d %d\n"), $1, $2;}' inputFileName

Ответ 3

Следующее должно сделать это

{ printf "%s %.0f\n", $1, $2}

Ответ 4

Я поддержал всех, но для удовольствия здесь еще один:)

awk '{split($2,a,"."); print $1" "a[1]}'

Ответ 5

Поскольку вы хотите усечь, а не округлять, используйте %d вместо %0.f:

awk '{printf "%s %d\n", $1, $2}'

Ответ 6

Если другие ищут, как заполнять номера, чтобы, например, -0.1 преобразовывался в -1, вы можете сделать что-то вроде этого:

$ printf %s\\n -1 -.9 -.1 0 .1 .9 1|awk '{x=int($0);print(x==$0||$0>0)?x:x-1}'
-1
-1
-1
0
0
0
1