$ msggrep -K -E -e "^Sign" --no-wrap ru.po # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-04-22 14:41+0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: стандартный ввод:27 ввод:25 msgid "Sign" msgstr "Подпись" #: ui/pkg/sources/index.scm:205 стандартный ввод:3 ввод:13 msgid "Signature:" msgstr "Подпись:" #: backend3/pkg-sources:156 msgid "Signature" msgstr "Подпись" $ msggrep -K -E -e "^Sign$" --no-wrap ru.po $ Мало того что выводят заголовок, который никто не просил (""), так ещё и регулярные выражения не корректно обрабатываются. Достаточно добавить привязку к концу строки, так сразу всё перестаёт работать. При этом привязка к началу строки работает без проблем.
Судя по коду gettext-tools/src/msggrep.c, привязка к концу строки в регвыражении в принципе не поддерживается. Кроме того, gettext использует какой-то древний libgrep, который иногда падает в корку: $ msggrep -K -e '^.*$' ru.po Ошибка сегментирования
Если в результате работы msggrep что-нибудь нашлось, то заголовок выводится всегда. Таков принцип работы msggrep, которая должна на выходе давать валидный PO-файл. Привязка к концу строки и ключный libgrep исправлены в 0.18.1-alt1.