Чистая оболочка :
while read a b rest; do
b=$(printf "%05.2f" $b);
echo "$a $b $rest";
done < file.txt
Что, если вы используете awk
?
$ awk '$2>0 && $2<10 {$2="0"$2}1' file
num 00.12 num num
num 25.53 num num
num 07.82 num num
с awk
:
$ awk '$2 = sprintf("%05.2f",$2)' file
num 00.12 num num
num 25.53 num num
num 07.82 num num
То, что вы после того, как вы, вероятно, что-то вроде:
sed 's/ \([0-9]\.\)/0\1/'
, он соответствует пространству, за которым следует одна цифра от диапазона от 0 до 9, а затем точка и заменяет пространство на 0. Карлесы \ ([0 -9] \. \)
Отметьте группу, на которую ссылается \ 1
в замене части выражения.