Encontre o número na string e substitua-o

0

Eu escrevi código em C ++ e agora quero substituir o número em uma string usando scripts de shell.

A parte que precisa ser substituída:

if (random<=90)

Como posso alterar o 90 a partir de um script de shell?

Eu escrevi isso, mas preciso de algo eficiente além de sed ou com uma expressão regular melhor apenas para corresponder ao número em si.

for i in {1..1000..100}
do
sed -i "s/(random<=.*)/(random<=$i)/g" myfile
done
    
por Arash 12.12.2013 / 21:55

1 resposta

1

Se você quiser apenas comparar o número, precisará olhar positivo para trás e olhar para frente . sed não suporta isso, mas perl faz.

perl -pi -e "s/(?<=\(random<=).*(?=\))/$i/g" myfile

Para explicar:

(?<=                         positive lookbehind
  \(random<=                 match a literal (random<=
)
.*                           match any character, multiple times
(?=                          positive lookeahead
  \)                         match a literal )
)

As correspondências lookbehind e lookahead não são usadas, portanto, você pode substituir por $i .

    
por 12.12.2013 / 22:34