Regex 将正则表达式与';msggrep';

Regex 将正则表达式与';msggrep';,regex,bash,gettext,Regex,Bash,Gettext,我有一个PO文件,内容如下: msgid "or" msgstr "or-translation" msgid "orand" msgstr "orand-translation" 我需要获得给定msgid的翻译。使用命令“msggrep-K-e'orand'template2.pot”我得到了'orand'的翻译,这样就可以了 但是当我使用“msggrep-K-e”或“template2.pot”时,if同时返回翻译('or'和'orand')。命令“msggrep-K-e'^或“temp

我有一个PO文件,内容如下:

msgid "or"
msgstr "or-translation"

msgid "orand"
msgstr "orand-translation"
我需要获得给定msgid的翻译。使用命令“msggrep-K-e'orand'template2.pot”我得到了'orand'的翻译,这样就可以了

但是当我使用“msggrep-K-e”或“template2.pot”时,if同时返回翻译('or'和'orand')。命令“msggrep-K-e'^或“template2.pot”按预期工作,同时返回两个翻译,但“msggrep-K-e'^或$”template2.pot”由于不返回任何内容而失败。“$”字符似乎破坏了msggrep正则表达式解析器

我尝试过使用其他msggrep标志(如-F,-E…),但它们都从文件中读取测试模式,这对于我的实际需要是不可接受的。我正在使用msggrep 0.14.6(我无法更新到最近的库)


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

您可以使用词尾检查:

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

这确保在
或'
之后有一个单词边界,因此它与
'或'
不匹配,谢谢你的回答。这是一个“讨厌”的解决方案(类似于msgid的“.or.”将在“\bor\b”上匹配,但总比没有好:)