有人能帮助我了解 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
当你处理大量文件时,你可能会非常注意。数量越多就越混乱。
此刻我无法帮助你Visual Basic或者EmEditor 宏但我可以给你另一种选择。
您可以安装一些类似 Linux环境如 CygWin、UnxUtils...,请参阅链接和可能性有没有类似 cmd.exe 的 sed 实用程序,或者您可以尝试在 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
。