41703
10002
30003
40002
40000
20203
20203
30100
50000
50000
50000
50000
70700
70600
Eu tenho este arquivo. e eu quero saída como
4.17.3
1.0.2
3.0.3
4.0.2
4.0.0
2.2.3
2.2.3
3.1.0
5.0.0
5.0.0
5.0.0
5.0.0
7.7.0
7.6.0
Estou trabalhando na máquina solaris.
Awk
solução:substr(string, start [, length ])
- Retorna umalength
substring de caracteres destring
, começando no número do caracterestart
.A saída:
Se o GNU
awk
for suportado, um caminho mais curto seria o seguinte:FS=""
- Se o valor for a string nula (""
), cada caractere no registro se tornará um campo separado.A primeira
sed
substituição criax.yy.zz
dexyyzz
. Ele faz isso capturando os três grupos de caracteres em grupos de captura separados (o\(.\)
e os dois\(..\)
em que cada ponto corresponde a um único caractere) e, em seguida, os insere novamente com pontos intermediários.A segunda substituição remove qualquer zero imediatamente após um ponto.
solução GNU sed
\B - Corresponde a todos os lugares, exceto no limite de uma palavra; isto é, corresponde se o caractere à esquerda e o caractere à direita forem ambos caracteres de “palavra” ou ambos caracteres de “não-palavra”.
A
sed
solução sem recursos GNUResultado