Тот факт, что ваш ожидаемый результат не совпадает с вашим примером ввода, означает, что мы не можем адекватно протестировать решение, но, возможно, это то, что вы хотите:
$ awk '
{ print t($1), t($2) }
function t(n, s) { s=index(n,"."); return (s ? substr(n,1,s+4) : n) }
' file
56603.6153 2.2126
56603.6156 2.2156
56603.6158 2.2108
56603.6161 2.2161
56603.6166 2.2049
56603.6168 2.1952
56603.6171 2.2195
56603.6173 2.2107
56603.6176 2.1998
Оберните возврат из t () вsprintf("%.04f",...)
если вы хотите, чтобы все значения форматировались, а не просто усекались при необходимости, например:
function t(n, s) { s=index(n,"."); return sprintf("%.04f",(s ? substr(n,1,s+4) : n)) }