Eu tento fazer este programa bash muito simples que deve fazer as seguintes operações:
-
modificar um arquivo java n vezes: toda vez que eu preciso alterar uma única palavra em uma única linha do arquivo (a linha é 11) Eu sei que há o seguinte comando que substitui uma única palavra em uma linha particular de um programa com outro:
sed -i "11s/1/$n/" IC_masslessPlanetesimal.java
se eu fizer o comando acima eu posso modificar apenas uma vez o arquivo.java porque na segunda iteração do ciclo for eu não tenho a mesma palavra que na primeira iteração: eu começo com 1 na linha 11, do que na a primeira iteração eu mudo com $n
(que é igual a 2), mas agora COMO eu posso modificar o comando sed
para mudar novamente a palavra (que agora é igual a 2) para ter , por exemplo, 3 na 11ª linha?
-
compile o arquivo java: ok;
-
modifique um arquivo.txt: novamente o mesmo problema que em 1) Eu quero mudar uma palavra em uma linha iterativamente com um ciclo para ou algo assim;
-
passá-lo para um arquivo executável: este é o segundo problema. Eu modifiquei o arquivo param.txt e agora quero lê-lo em um arquivo executável chamado exec . Se eu fizer isso a partir do terminal, devo iniciar o exec. programa com o comando ./exec
e depois disso eu devo escrever da tela o nome do arquivo.txt. Agora é possível iniciar um programa do bash e ler com ele o arquivo.txt? Eu tento com:
sed -i "13s/Zero/$n/" param.txt
./exec < param.txt
esse script deve alterar a linha 13 de Zero para $ n em param.txt como posso iniciar o programa exec com o comando ./exec
com o arquivo param.txt específico.
#!/bin/bash
n=0
for n in "2" "3"
do
sed -i "11s/1/$n/" IC_masslessPlanetesimal.java
javac IC_masslessPlanetesimal.java
java IC_masslessPlanetesimal
sed -i "13s/Zero/$n/" param.txt
./exec < param.txt
done
muito obrigado !!!
-
Em vez de editar o arquivo no lugar:
sed -i "11s/1/$n/" IC_masslessPlanetesimal.java
copie-o para um arquivo de modelo, diga IC_masslessPlanetesimal.java.template e crie uma nova versão dele para cada n:
sed "11s/1/$n/" < IC_masslessPlanetesimal.java.template > IC_masslessPlanetesimal.java
-
-
O mesmo que 1
-
Sim, ./exec < param.txt
está correto. Isso não funciona?
por
04.01.2014 / 12:47