x.xx에서 0x.xx 형식의 십진수 변환 번호, sed?

x.xx에서 0x.xx 형식의 십진수 변환 번호, sed?

양식의 파일이 있습니다

...
num  0.12 num num 
num 25.53 num num
num  7.82 num num
...

각 행의 두 번째 필드를 변환하여 숫자 >= 0 및 < 10에 "0"을 추가하려고 하므로 출력은 다음 형식이 됩니다.

...
num 00.12 num num
num 25.53 num nnum  
num 07.82 num num
...

나는 전에 시도했다

sed 's/ 7./07./2'

그러나 공백을 구분하지 않으므로 "7"이 나타나면 대체됩니다.

답변1

그리고 awk:

$ awk '$2 = sprintf("%05.2f",$2)' file
num 00.12 num num
num 25.53 num num
num 07.82 num num

답변2

당신이 추구하는 것은 다음과 같을 수 있습니다 :

sed 's/ \([0-9]\.\)/0\1/'

공백, 0~9 범위의 숫자, 점이 뒤따르고 공백을 0으로 바꿉니다. 괄호는 표현식의 대체 부분에서 \([0-9]\.\)참조되는 그룹을 표시합니다.\1

답변3

그것이 사용된다면 어떨까요 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

답변4

순수 쉘:

while read a b rest; do 
    b=$(printf "%05.2f" $b); 
    echo "$a $b $rest";
done < file.txt

관련 정보