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
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!
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
Tags sed replace shell-script