linux 手册页名称(及其下的行)和描述(及其下的行),以grep或

qgzx9mmu  于 2023-03-22  发布在  Linux
关注(0)|答案(1)|浏览(120)

我正试图为各种工具压缩一个手册页列表,以便:

NAME
    ls – list directory contents
DESCRIPTION
     For each operand that names a file of a type other than directory, ls displays its name as well as any requested, associated information.  For each operand that names a file of
     type directory, ls displays the names of files contained within that directory, as well as any requested, associated information.

输出应该是完整的NAME部分和完整的DESCRIPTION部分。所以当我输入man <tool name> | awk/grep/etc时,它会像上面的代码一样出现。
我已经尝试了man ls | grep "NAME"和不同的变化。man ls | col -bx | awk '/^[A-Z ]+$/ {print}'只给我的标题名称。和各种各样的组合,导致我没有在哪里。任何建议?

oxiaedzo

oxiaedzo1#

你的问题不清楚,但也许这就是你想要的,因为它看起来像你发布的预期输出?

$ man ls | awk -v RS= '/^(NAME|DESCRIPTION)/'
NAME
       ls - list directory contents
DESCRIPTION
       List  information  about the FILEs (the current directory by default).  Sort entries alphabetically if none
       of -cftuvSUX nor --sort is specified.

但你说你想要完整的描述,那么这将是:

$ man ls | awk '
    /^[[:alnum:]]/{ prt(); rec="" }
    { rec = rec $0 ORS }
    END { prt() }
    function prt() {
        gsub(/^[[:space:]]+|[[:space:]]+$/,"",rec)
        if ( rec ~ /^(NAME|DESCRIPTION)/ ) {
            print rec
        }
    }
'
NAME
       ls - list directory contents
DESCRIPTION
       List  information  about the FILEs (the current directory by default).  Sort entries alphabetically if none
       of -cftuvSUX nor --sort is specified.

       Mandatory arguments to long options are mandatory for short options too.

       -a, --all
              do not ignore entries starting with .

       -A, --almost-all
              do not list implied . and ..

       --author
              with -l, print the author of each file

       -b, --escape
              print C-style escapes for nongraphic characters

       --block-size=SIZE
              with -l, scale sizes by SIZE when printing them; e.g., '--block-size=M'; see SIZE format below

       -B, --ignore-backups
              do not list implied entries ending with ~

       -c     with -lt: sort by, and show, ctime (time of last modification of file status information); with  -l:
              show ctime and sort by name; otherwise: sort by ctime, newest first

       -C     list entries by columns

       --color[=WHEN]
              colorize the output; WHEN can be 'always' (default if omitted), 'auto', or 'never'; more info below

       -d, --directory
              list directories themselves, not their contents

       -D, --dired
              generate output designed for Emacs' dired mode

       -f     list all entries in directory order

       -F, --classify[=WHEN]
              append  indicator  (one of */=>@|) to entries; WHEN can be 'always' (default if omitted), 'auto', or
              'never'

       --file-type
              likewise, except do not append '*'

       --format=WORD
              across -x, commas -m, horizontal -x, long -l, single-column -1, verbose -l, vertical -C

       --full-time
              like -l --time-style=full-iso

       -g     like -l, but do not list owner

       --group-directories-first
              group directories before files;

              can be augmented with a --sort option, but any use of --sort=none (-U) disables grouping

       -G, --no-group
              in a long listing, don't print group names

       -h, --human-readable
              with -l and -s, print sizes like 1K 234M 2G etc.

       --si   likewise, but use powers of 1000 not 1024

       -H, --dereference-command-line
              follow symbolic links listed on the command line

       --dereference-command-line-symlink-to-dir
              follow each command line symbolic link

              that points to a directory

       --hide=PATTERN
              do not list implied entries matching shell PATTERN (overridden by -a or -A)

       --hyperlink[=WHEN]
              hyperlink file names; WHEN can be 'always' (default if omitted), 'auto', or 'never'

       --indicator-style=WORD
              append  indicator  with  style  WORD  to  entry  names:  none  (default),  slash   (-p),   file-type
              (--file-type), classify (-F)

       -i, --inode
              print the index number of each file

       -I, --ignore=PATTERN
              do not list implied entries matching shell PATTERN

       -k, --kibibytes
              default to 1024-byte blocks for file system usage; used only with -s and per directory totals

       -l     use a long listing format

       -L, --dereference
              when showing file information for a symbolic link, show information for the file the link references
              rather than for the link itself

       -m     fill width with a comma separated list of entries

       -n, --numeric-uid-gid
              like -l, but list numeric user and group IDs

       -N, --literal
              print entry names without quoting

       -o     like -l, but do not list group information

       -p, --indicator-style=slash
              append / indicator to directories

       -q, --hide-control-chars
              print ? instead of nongraphic characters

       --show-control-chars
              show nongraphic characters as-is (the default, unless program is 'ls' and output is a terminal)

       -Q, --quote-name
              enclose entry names in double quotes

       --quoting-style=WORD
              use quoting style  WORD  for  entry  names:  literal,  locale,  shell,  shell-always,  shell-escape,
              shell-escape-always, c, escape (overrides QUOTING_STYLE environment variable)

       -r, --reverse
              reverse order while sorting

       -R, --recursive
              list subdirectories recursively

       -s, --size
              print the allocated size of each file, in blocks

       -S     sort by file size, largest first

       --sort=WORD
              sort by WORD instead of name: none (-U), size (-S), time (-t), version (-v), extension (-X), width

       --time=WORD
              change  the  default  of using modification times; access time (-u): atime, access, use; change time
              (-c): ctime, status; birth time: birth, creation;

              with -l, WORD determines which time to show; with --sort=time, sort by WORD (newest first)

       --time-style=TIME_STYLE
              time/date format with -l; see TIME_STYLE below

       -t     sort by time, newest first; see --time

       -T, --tabsize=COLS
              assume tab stops at each COLS instead of 8

       -u     with -lt: sort by, and show, access time; with -l: show access time and  sort  by  name;  otherwise:
              sort by access time, newest first

       -U     do not sort; list entries in directory order

       -v     natural sort of (version) numbers within text

       -w, --width=COLS
              set output width to COLS.  0 means no limit

       -x     list entries by lines instead of by columns

       -X     sort alphabetically by entry extension

       -Z, --context
              print any security context of each file

       --zero end each output line with NUL, not newline

       -1     list one file per line

       --append-exe
              append .exe if cygwin magic was needed

       --help display this help and exit

       --version
              output version information and exit

       The  SIZE  argument  is  an integer and optional unit (example: 10K is 10*1024).  Units are K,M,G,T,P,E,Z,Y
       (powers of 1024) or KB,MB,... (powers of 1000).  Binary prefixes can be used, too: KiB=K, MiB=M, and so on.

       The TIME_STYLE argument can be full-iso, long-iso, iso, locale, or +FORMAT.  FORMAT is interpreted like  in
       date(1).  If FORMAT is FORMAT1<newline>FORMAT2, then FORMAT1 applies to non-recent files and FORMAT2 to re‐
       cent files.  TIME_STYLE prefixed with 'posix-' takes effect  only  outside  the  POSIX  locale.   Also  the
       TIME_STYLE environment variable sets the default style to use.

       Using  color  to  distinguish  file  types  is  disabled  both  by  default  and  with --color=never.  With
       --color=auto, ls emits color codes only when standard output is connected to a terminal.  The LS_COLORS en‐
       vironment variable can change the settings.  Use the dircolors command to set it.

   Exit status:
       0      if OK,

       1      if minor problems (e.g., cannot access subdirectory),

       2      if serious trouble (e.g., cannot access command-line argument).

相关问题