Substitui algumas strings de texto automaticamente?

0

Mais detalhado:

Eu tenho uma pasta com dados para um jogo cujo código é puro texto e personalizável (M.U.G.E.N). Além de todas as outras coisas, o arquivo * .cns de cada caractere contém a seguinte sequência de texto:

;def file for char
Life = 2334 (could be any number from 100 to 99999) ;default value is 1000
Attack = 123 (could be any number from 1 to 99999) ; 100
Defence = 157 (could be any number from 1 to 99999) ; 100

Mas, em vez do padrão definido para seu valor como padrão (Vida = 1000, Ataque = 100, Defesa = 100), eles são bastante desequilibrados à medida que o usuário que faz o upload desse jogo é alterado ( aleatoriamente ) seu valor por suas referências estranhas. Agora meu problema é que eu quero redefinir todos os seus valores de volta ao padrão sem passar por todo o arquivo * .cns (centenas, talvez mais) e editar essas linhas eu mesmo. Como posso fazer isso com eficiência?

Eu quero algo como Pesquise todo o conteúdo do arquivo *. Cns na pasta e detecte a linha que inclui * "Life = *" "Attack = *" e "Defense = " (não diferencia maiúsculas de minúsculas ) e substituí-los por "Vida = 1000", "Ataque = 100" ... e assim por diante, sem se preocupar com o número certo de behide "=") E tão automático quanto possível.

Eu pesquiso um pouco no Google e acho que talvez algum tipo de método de encontrar o regex em algum editor de texto avançado possa ajudar, mas eu não consigo entender ... alguém pode dar uma mão e explicar passo a passo para mim como façam? Muito obrigado.

    
por Edward 28.12.2014 / 06:01

1 resposta

1

No linux (ou no windows usando cygwin) você pode usar

find . -name '*.cns' 

para encontrar todos os arquivos com a extensão '.cns' no diretório atual.

Você pode usar 'sed' para editar os arquivos "inline"

find . -name '*.cns' -exec \
sed -i~ 's/Life.*/Life = 1000/g;s/Attack.*/Attack = 100/g;s/Defence.*/Defence = 100/g' "{}" \;
    
por 26.01.2015 / 16:54