Número de conversão decimal do formato x.xx para 0x.xx, sed?

1

Eu tenho um arquivo no formato

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

e eu quero converter o segundo campo de cada linha adicionando um "0" aos números > = 0 e < 10 então a saída terá a forma:

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

Eu tentei com

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

mas não é sensível a espaços em branco, então substitui qualquer ocorrência de "7".

    
por nemesis 12.09.2014 / 16:01

4 respostas

5

com awk :

$ awk '$2 = sprintf("%05.2f",$2)' file
num 00.12 num num
num 25.53 num num
num 07.82 num num
    
por 12.09.2014 / 16:18
3

O que você está procurando é provavelmente algo como:

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

Ele corresponde a um espaço seguido por um dígito do intervalo de 0 a 9 seguido por um ponto e substitui o espaço por 0. Os parênteses \([0-9]\.\) marcam um grupo que é referenciado por na parte de substituição do expressão.

    
por 12.09.2014 / 16:10
2

E se você usar 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
    
por 12.09.2014 / 16:07
0

Concha pura:

while read a b rest; do 
    b=$(printf "%05.2f" $b); 
    echo "$a $b $rest";
done < file.txt
    
por 12.09.2014 / 18:26