Quando você trabalha com muitos arquivos, pode prestar muita atenção. No número reside o caos.
Neste momento, não posso ajudá-lo com Visual Basic ou EmEditor Macro , mas posso dar uma alternativa.
Você pode instalar algum ambiente linux como como CygWin, UnxUtils ..., ver link e possibilidade em , ou você pode tentar traduzir o que ele segue no Visual Basic.
Marcos:
- Personalizar uma chave exclusiva. No seu caso deve ser a linha que contém
MadCap:matchPercent="0"
-
Verifique se, com sua seleção, você não terá outras linhas não desejadas .
Sob o linux você pode fazer:grep -e 'MadCap:matchPercent="0"' AllMyFiles # It gives a lot of lines maybe more that the number of files grep -e 'MadCap:matchPercent="0"' AllMyFiles | sort -u # sort -u unique ... if you are lucky it's only one.
Você pode usar uma chave mais restrita como
grep -e 'MadCap:matchPercent="0" /></target></trans-unit>' AllMyFiles
-
Agora você pode começar a trabalhar em um único arquivo, por exemplo, substituindo a linha
MadCap:matchPercent="0" /></target></trans-unit>
pela sua string.
Eu escrevo um pequeno roteiro mesmo porque é mais fácil de ler. Vamos chamá-lo deChange_One.sh
e invocá-lo com/bin/bash Change_One.sh Myfile.txt
. Experimente antes em um arquivo copiado:#!/bin/bash C="Good morning" # This is what you want to add A='MadCap:matchPercent="0" \/><\/target><\/trans-unit>' B='MadCap:matchPercent="0" \/>'${C}'<\/target>\"> <\/trans-unit>' sed -i -e "s/${A}/${B}/g" $1 # Here you do it
-
Quando estiver tudo bem, você pode continuar e repetir em todos os arquivos
#!/bin/bash searchFiles='*.txt' # Here the 5000 files C="Good morning" # This is what you want to add # $AA the not escaped string # $A and $B the escaped strings AA='MadCap:matchPercent="0" /></target></trans-unit>' A='MadCap:matchPercent="0" \/><\/target><\/trans-unit>' B='MadCap:matchPercent="0" \/>'${C}'<\/target>\"> <\/trans-unit>' for i in 'grep -l -E "$AA" $searchFiles'; do # echo "# Working on file " $i # uncomment this line to test iterations sed -i -e "s/${A}/${B}/g" "$i" # comment this line to test iterations done
Nota: com
grep
você pode pesquisar a string dentro dos arquivos, com-l
você imprime apenas o nome do arquivo, com 'command' você executa o comando dentro do script e sua saída (os nomes de arquivos correspondentes) é usada pelo ciclofor ... do done
.