@pindex msggrep @cindex @code{msggrep} program, usage @example msggrep [@var{option}] [@var{inputfile}] @end example @cindex search messages in a catalog The @code{msggrep} program extracts all messages of a translation catalog that match a given pattern or belong to some given source files. @subsection Input file location @table @samp @item @var{inputfile} Input PO file. @item -D @var{directory} @itemx --directory=@var{directory} @opindex -D@r{, @code{msggrep} option} @opindex --directory@r{, @code{msggrep} option} Add @var{directory} to the list of directories. Source files are searched relative to this list of directories. The resulting @file{.po} file will be written relative to the current directory, though. @end table If no @var{inputfile} is given or if it is @samp{-}, standard input is read. @subsection Output file location @table @samp @item -o @var{file} @itemx --output-file=@var{file} @opindex -o@r{, @code{msggrep} option} @opindex --output-file@r{, @code{msggrep} option} Write output to specified file. @end table The results are written to standard output if no output file is specified or if it is @samp{-}. @subsection Message selection @example [-N @var{sourcefile}]... [-M @var{domainname}]... [-K @var{msgid-pattern}] [-T @var{msgstr-pattern}] [-C @var{comment-pattern}] @end example A message is selected if @itemize @bullet @item it comes from one of the specified source files, @item or if it comes from one of the specified domains, @item or if @samp{-K} is given and its key (msgid or msgid_plural) matches @var{msgid-pattern}, @item or if @samp{-T} is given and its translation (msgstr) matches @var{msgstr-pattern}, @item or if @samp{-C} is given and the translator's comment matches @var{comment-pattern}. @end itemize When more than one selection criterion is specified, the set of selected messages is the union of the selected messages of each criterion. @var{msgid-pattern} or @var{msgstr-pattern} syntax: @example [-E | -F] [-e @var{pattern} | -f @var{file}]... @end example @var{pattern}s are basic regular expressions by default, or extended regular expressions if -E is given, or fixed strings if -F is given. @table @samp @item -N @var{sourcefile} @itemx --location=@var{sourcefile} @opindex -N@r{, @code{msggrep} option} @opindex --location@r{, @code{msggrep} option} Select messages extracted from @var{sourcefile}. @var{sourcefile} can be either a literal file name or a wildcard pattern. @item -M @var{domainname} @itemx --domain=@var{domainname} @opindex -M@r{, @code{msggrep} option} @opindex --domain@r{, @code{msggrep} option} Select messages belonging to domain @var{domainname}. @item -K @itemx --msgid @opindex -K@r{, @code{msggrep} option} @opindex --msgid@r{, @code{msggrep} option} Start of patterns for the msgid. @item -T @itemx --msgstr @opindex -T@r{, @code{msggrep} option} @opindex --msgstr@r{, @code{msggrep} option} Start of patterns for the msgstr. @item -E @itemx --extended-regexp @opindex -E@r{, @code{msggrep} option} @opindex --extended-regexp@r{, @code{msggrep} option} Specify that @var{pattern} is an extended regular expression. @item -F @itemx --fixed-strings @opindex -F@r{, @code{msggrep} option} @opindex --fixed-strings@r{, @code{msggrep} option} Specify that @var{pattern} is a set of newline-separated strings. @item -e @var{pattern} @itemx --regexp=@var{pattern} @opindex -e@r{, @code{msggrep} option} @opindex --regexp=@r{, @code{msggrep} option} Use @var{pattern} as a regular expression. @item -f @var{file} @itemx --file=@var{file} @opindex -f@r{, @code{msggrep} option} @opindex --file@r{, @code{msggrep} option} Obtain @var{pattern} from @var{file}. @item -i @itemx --ignore-case @opindex -i@r{, @code{msggrep} option} @opindex --ignore-case@r{, @code{msggrep} option} Ignore case distinctions. @end table @subsection Output details @c --no-escape and --escape omitted on purpose. They are not useful. @table @samp @item --force-po @opindex --force-po@r{, @code{msggrep} option} Always write an output file even if it contains no message. @item --indent @opindex --indent@r{, @code{msggrep} option} Write the .po file using indented style. @item --no-location @opindex --no-location@r{, @code{msggrep} option} Do not write @samp{#: @var{filename}:@var{line}} lines. @item --add-location @opindex --add-location@r{, @code{msggrep} option} Generate @samp{#: @var{filename}:@var{line}} lines (default). @item --strict @opindex --strict@r{, @code{msggrep} option} Write out a strict Uniforum conforming PO file. Note that this Uniforum format should be avoided because it doesn't support the GNU extensions. @item -w @var{number} @itemx --width=@var{number} @opindex -w@r{, @code{msggrep} option} @opindex --width@r{, @code{msggrep} option} Set the output page width. Long strings in the output files will be split across multiple lines in order to ensure that each line's width (= number of screen columns) is less or equal to the given @var{number}. @item --sort-output @opindex --sort-output@r{, @code{msggrep} option} Generate sorted output. Note that using this option makes it much harder for the translator to understand each message's context. @item --sort-by-file @opindex --sort-by-file@r{, @code{msggrep} option} Sort output by file location. @end table @subsection Informative output @table @samp @item -h @itemx --help @opindex -h@r{, @code{msggrep} option} @opindex --help@r{, @code{msggrep} option} Display this help and exit. @item -V @itemx --version @opindex -V@r{, @code{msggrep} option} @opindex --version@r{, @code{msggrep} option} Output version information and exit. @end table