1

Кто-нибудь может мне помочь с EmEditor Macro?

id="131"
        restype="x-p"
        phase-name="pretrans"><source>Good morning</source><seg-source><mrk
            mtype="seg"
            mid="1">Good morning</mrk></seg-source><target><mrk
            mtype="seg"
            mid="1"
            MadCap:segmentStatus="Untranslated"
            MadCap:matchPercent="0" /></target></trans-unit>

Должен ли он стать

id="131"
        restype="x-p"
        phase-name="pretrans"><source>Good morning</source><seg-source><mrk
            mtype="seg"
            mid="1">Good morning</mrk></seg-source><target><mrk
            mtype="seg"
            mid="1"
            MadCap:segmentStatus="Untranslated"
            MadCap:matchPercent="0" />Good morning</target>"> </trans-unit>

У меня есть 5000 файлов, и мне нужно запустить этот макрос в пакетном режиме, так что если кто-нибудь может помочь мне сделать это?

Я хочу, чтобы код зацикливал процесс в пакетном файле, исходный текст мог быть любым.

1 ответ1

0

Когда вы работаете с большим количеством файлов, вы можете уделять много внимания. В числе проживают хаос.

В данный момент я не могу помочь вам с Visual Basic или EmEditor Macro, но я могу дать вам альтернативу.

Вы можете либо установить некоторую среду, похожую на Linux, такую как CygWin, UnxUtils ..., см. Ссылку и возможность, есть ли какая-нибудь утилита, подобная sed, для cmd.exe, или вы можете попробовать перевести то, что следует в Visual Basic.

Основные этапы:

  • Индивидуализируйте уникальный ключ. В вашем случае должна быть строка, содержащая MadCap:matchPercent="0"
  • Проверьте, что с вашим выбором вы не будете брать другие нежелательные строки.
    Под Linux вы можете сделать:

    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. 
    

    Вы можете использовать более ограниченный ключ как

    grep -e 'MadCap:matchPercent="0" /></target></trans-unit>' AllMyFiles 
    
  • Теперь вы можете начать работать с одним файлом, например, подставив в эту строку MadCap:matchPercent="0" /></target></trans-unit> вашей строкой.
    Я пишу небольшой сценарий даже потому, что его легче читать. Давайте назовем его Change_One.sh и вызовем его с помощью /bin/bash Change_One.sh Myfile.txt . Попробуйте прежде чем скопировать файл:

    #!/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 
    
  • Когда все в порядке, вы можете продолжить и перебрать все файлы

    #!/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
    

    Примечание: с помощью grep вы можете искать строку внутри файлов, с помощью -l вы печатаете только имя файла, с помощью `command` вы выполняете команду внутри скрипта, и ее вывод (соответствующие имена файлов) используется for ... do done цикл.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .