Como usar o sed para substituir strings por categorias?

0

Eu tenho algumas categorias e seus valores:

Category: Value:
1*4  15.934934
1*5*3            19.281281
1*8*10*2      78.20912

Eu gostaria de substituir as categorias por números que representam as categorias.

Por exemplo:

1 * 4 tem dois números, então seria substituído por 2

1 * 5 * 3 tem três números, então seria substituído por 3

1 * 8 * 10 * 2 tem quatro números, então seria substituído por 4

Eu preciso fazer o processo para centenas de arquivos, por isso é muito importante automatizar o processo!

    
por Stellamaris Sotomayor 03.07.2017 / 19:46

2 respostas

0

Como sed não tem noção de números, isso é um pouco trabalhoso:

sed -E 's/^[0-9]+\*/1*/; s/^1\*[0-9]+/2/; s/^2\*[0-9]+/3/; s/^3\*[0-9]+/4/;' input
    
por 04.07.2017 / 11:35
1

Semelhante a ideia da steeldriver , mas contando estrelas:

awk '{ $1 = 1 + gsub(/\*/, "", $1); print; }' < input > output

Quando executado na entrada de amostra, resulta em:

2 15.934934
3 19.281281
4 78.20912
    
por 04.07.2017 / 00:20