使用带有'msggrep'的正则表达式

时间:2009-08-25 13:12:55

标签: regex bash gettext

我有一个包含以下内容的PO文件:

msgid "or"
msgstr "or-translation"

msgid "orand"
msgstr "orand-translation"

我需要获取给定msgid的翻译。使用命令“msggrep -K -e'rand'template2.pot”我得到'orand'的翻译,这没关系。

但是当我使用“msggrep -K -e”或“template2.pot”时,如果同时返回翻译('或'和'orand')。命令“msggrep -K -e'^或'template2.pot”按预期工作,返回两个翻译,但“msggrep -K -e'^或$'template2.pot”只是失败因为它不返回任何内容。好像'$'字符会破坏msggrep正则表达式解析器。

我尝试过使用其他msggrep标志(比如-F,-E ...)但是所有这些标志都从文件中读取测试模式,这对我的实际需求来说是不可接受的。我正在使用msggrep 0.14.6(我无法更新到更新的库)。

有人知道如何使用msggrep获取'orand'的翻译?

1 个答案:

答案 0 :(得分:1)

您可以改为使用词尾检查:

msggrep -K -e 'or\b' template2.pot

确保'or'后面有单词边界,因此它与'orand'不匹配。