Это ищет целые числа в любом столбце после первого и добавляет .00
:
$ awk '{for (i=2;i<=NF;i++) if (!($i ~ /[.]/))$i=$i ".00"} 1' input
2017 47.0000 0.783333 0.2500
1663 1920.0000 32.00 8.0000
для ( i = 2; i <= NF; i ++)
Это запускает цикл по полям, начиная со второго поля, i = 2
, и продолжая до последнего поля, i = NF
.
if (! ($ I ~ /[.pting/))$i=$i ".00"
Для каждого i
, который мы перебираем в цикле, мы проверяем, есть ли i -е поле, $ i
, содержит точку. Если это так, то ($ i ~ /[.pting/)
оценивается как истина. Однако мы отрицаем этот результат: ! ($ I ~ /[.pting/)
истинно, только если поле i
не содержит точки , но не . Если это так, мы добавляем .00
в конец поля i
.
Этот оператор if
является единственным оператором в цикле for
.
1
Это загадочное сокращение awk для печати всей строки.