groff
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Groff] Parsing specific section of man page


From: Ralph Corderoy
Subject: Re: [Groff] Parsing specific section of man page
Date: Sun, 22 Jan 2012 14:18:29 +0000

Hi Siteshwar,

> No, I am in no way interested in X. I am working on a shell, and the
> idea is to show suggestions for command line options on pressing tab.
> So let's say on pressing "ls<TAB>", I will get all the command line
> options for ls command. Now a good idea is to fetch these options from
> manual pages.
>
> @Larry, I am trying to do same thing with Python. Since I need to
> parse the structure of OPTIONS section for completions. Any suggestion
> for parsing man page sections are welcome ?

Not every man page has an OPTIONS section so you may need to fall back
on something else, e.g. SYNOPSIS, but perhaps formatting the machine
page to text and plucking stuff from it would be cheapest.

    $ man dmesg | sed '/^OPTIONS/p; 1,//d; /^[^ ]/Q'
    OPTIONS
      -c   Clear the ring buffer contents after printing.

      -r   Print the raw message buffer, i.e., don't strip the log level 
prefixes.

      -s bufsize
           Use a buffer of size bufsize to query the kernel ring buffer.  This 
is 16392 by
           default.  (The default kernel syslog buffer size was 4096 at first, 
8192 since
           1.3.54, 16384 since 2.1.113.)  If you have set the kernel buffer to 
be larger than
           the default then this option can be used to view the entire buffer.

      -n level
           Set the level at which logging of messages is done to the console.  
For example, -n
           1 prevents all messages, except panic messages, from appearing on 
the console.  All
           levels of messages are still written to /proc/kmsg, so syslogd(8) 
can still be used
           to control exactly where kernel messages appear.  When the -n option 
is used, dmesg
           will not print or clear the kernel ring buffer.

           When both options are used, only the last option on the command line 
will have an
           effect.

    $

Cheers, Ralph.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]