Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 替换匹配的不同编码的标记_Bash_Macos_Character Encoding - Fatal编程技术网

Bash 替换匹配的不同编码的标记

Bash 替换匹配的不同编码的标记,bash,macos,character-encoding,Bash,Macos,Character Encoding,我有一本是别人翻译的。我不知道此人使用了什么编码,但似乎不应该翻译的标记$TAG$被转换为另一组字符,即,即使标记看起来相同,它们包含的ASCII字符也不是源代码中的字符。这将进一步将西里尔字符替换为扩展ASCII字符,这不是问题的一部分。因此,我的替换脚本至少部分地替换了标记 用原始文件中相应的标记替换损坏文件中的标记的最佳方法是什么 文件必须为UTF-8,带有BOM,EOL=LF 最好是Mac bash,谢谢。一种策略是列出当前的utf8标记,一个ascii标记列表,将它们对齐,然后使用pa

我有一本是别人翻译的。我不知道此人使用了什么编码,但似乎不应该翻译的标记$TAG$被转换为另一组字符,即,即使标记看起来相同,它们包含的ASCII字符也不是源代码中的字符。这将进一步将西里尔字符替换为扩展ASCII字符,这不是问题的一部分。因此,我的替换脚本至少部分地替换了标记

用原始文件中相应的标记替换损坏文件中的标记的最佳方法是什么

文件必须为UTF-8,带有BOM,EOL=LF


最好是Mac bash,谢谢。

一种策略是列出当前的utf8标记,一个ascii标记列表,将它们对齐,然后使用paste和sed将utf8标记替换为ukranian文件中的ascii标记:

grep -o '\$[^\$]\+\$' rights_of_man_l_ukrainian.txt | sort | uniq > utf8.tags.list
grep -o '\$[^\$]\+\$' rights_of_man_l_english.txt | sort | uniq > ascii.tags.list

# now, manually edit ascii.tags.list so that each line number has
# the correct replacement for that line of utf8.tags.list, e.g.,
# by using:
vimdiff utf8.tags.list ascii.tags.list

# escape the $s
sed -i 's/\$/\\$/g' utf8.tags.list ascii.tags.list

# now substitute the tags
paste utf8.tags.list ascii.tags.list |
  while read n k; do
    sed "s/$n/$k/g" rights_of_man_l_ukrainian.txt
  done > rights_of_man_l_ukrainian.ascii-tags.txt
更令人满意的方法是自动生成utf到ascii转换表。在mac上,iconv和perl Text::Unidecode都将utf8字符串变成垃圾。在linux上,konwert在这里展现了希望

ps:看起来还有另一个问题:两个缺少的标签:

FORCEBREAKALLIANCEDESC:1如果他们接受,两国对我们的意见都会减少,并且$Y$将对我们造成伤害。\n这也将在$COUNTRY | Y$和我们之间建立休战,并将他们对我们的信任降低$TRUSTCOST | R$。否则,我们将失去$PRESTIGE$PRESTIGE

vs

在研究中,研究者们使用了两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两两的的的的的的的的使用使用使用使用使用使用使用使用使用使用使用使用使用使用使用使用使用使用的的的的的对对对对对对对对对对两两两两两两两两两两两两两两两两两两两两两两两1078美元/年/年, а також зменшить їхню довіру до нас. а

缺少$TRUSTCOST | R$

stat_game_country_desc_server:0$VAL | Y$%的玩家本月以$NAME | Y$身份玩游戏

vs

统计游戏国家/地区描述服务器:0ааааааааааааааааааааааааааааа


丢失的$NAME | Y$

似乎在损坏的文件中只替换了相应的字母。例如,`А-A,ψ-I,κ-K等。也许我可以用拉丁语代替它们。不过,你可以晚些时候再试试……不过,如果能知道解决这个问题的其他方法,那就好了。例如,如何用正确的标签替换整个标签?