Histórico:
(1) Eu tenho um conjunto de dados de notação científica:
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.503832e-05, 1.433673e-05, 2.557402e-05,
3.081098e-05, 4.044465e-05, 2.480817e-05, 2.681778e-05, 1.533265e-05,
2.3156e-05, 3.193812e-05, 5.325314e-05, 1.639066e-05, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 2.259782e-05, 0.0004197799, 2.65868e-05, 0.0002485498,
3.485129e-05, 2.454055e-05, 0.0002096856, 0.0001910835, 1.969936e-05,
2.974743e-05, 8.983165e-05, 0.0004263787, 0.0004444561, 0.000241368, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
(2) Eu pretendo adicionar alguns valores a esses valores diferentes de zero.
(3) Graças à ajuda de outros usuários do Exchange, eu obtive uma solução usando:
perl -pe 's/([0-9.e-]+)/$1 == 0 ? $1 : .001 + $1/ge' < input.txt > output.txt
Meu problema:
Eu tenho duas perguntas a seguir:
(Q1) Eu sei que a partir de sed
, podemos extrair algumas linhas de um arquivo de entrada e salvar essas linhas em um arquivo de saída:
sed -n (123,345p) input.txt > output.txt
Que extraiu as linhas 123 para a linha 345 de input.txt
e salvou para ouput.txt
.
No entanto, não tenho idéias de como modificar o script perl
acima para adicionar números às linhas especificadas do arquivo ascii.
(Q2) Posso adicionar um option
ao script perl
acima, de forma que minhas alterações sejam adicionadas diretamente ao arquivo input.txt? Eu tentei modificar -pe
como -pei
, mas parece que não funciona.
Qualquer ajuda será apreciada.