localize e substitua a linha completa no script unix

0

Eu tenho um arquivo chamado praveen.pl . Este script contém muitas linhas, uma das quais é:

$input_store_nbr = "00100";

Qualquer número que esteja dentro do "nnnnn" será alterado por testadores manuais de acordo com sua entrada. Então, eu quero encontrar essa linha e alterar esse "nnnnn" por minha entrada.

Por exemplo, se minha entrada for 10000 , essa linha em praveen.pl deverá mudar para

$input_store_nbr = "10000";

Da próxima vez, se eu quiser alterá-lo para 20000 , essa linha deverá mudar para

$input_store_nbr = "20000";

Estou tentando automatizar a edição deste número de loja no arquivo praveen.pl .

    
por Praveen Kumar 26.12.2016 / 12:47

1 resposta

0

Se você simplesmente precisa modificar este script, e ainda não pode modificá-lo para aceitar um parâmetro de linha de comando por algum motivo estranho, você pode tentar o seguinte:

new_val=5000
sed -e "s/\$input_store_nbr = \"[0-9]+\";/\$input_store_nbr = \"$new_val\";/" src_file > tmp_file
mv tmp_file src_file

ou se você tiver um sed que o suporte (como o GNU ou o BSD com um argumento) você poderia usar o -i flag para sed e não precisar do arquivo temporário (explícito).

Eu ainda acho que seria melhor modificar o script fonte uma vez (já que já estão modificando) para fazer algo como:

$input_store_nbr = $ARGV[0];

invocando-o com o novo número como o primeiro argumento de linha de comando, como você teria passado para o script sed para reescrever o arquivo.

    
por 28.12.2016 / 02:03

Tags