aboutsummaryrefslogtreecommitdiffstats
path: root/scripts
diff options
authorAlejandro Colomar <alx.manpages@gmail.com>2021-05-09 23:39:20 +0200
committerMichael Kerrisk <mtk.manpages@gmail.com>2021-05-10 11:33:10 +1200
commita3ccd456f3880b4a82c3f424e3375b3f75a03cbc (patch)
treec71c13f00afbdd255b8ef54c0dd12e947a10d0d0 /scripts
parent3a42b0815e69f00bb74aa002e77f321c634d0a66 (diff)
downloadman-pages-a3ccd456f3880b4a82c3f424e3375b3f75a03cbc.tar.gz
scripts/bash_aliases: man_section(): Accept multiple sections
Signed-off-by: Alejandro Colomar <alx.manpages@gmail.com> Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
Diffstat (limited to 'scripts')
-rw-r--r--scripts/bash_aliases29
1 files changed, 19 insertions, 10 deletions
diff --git a/scripts/bash_aliases b/scripts/bash_aliases
index 813c00960c..7b1b7da9ca 100644
--- a/scripts/bash_aliases
+++ b/scripts/bash_aliases
@@ -85,26 +85,35 @@ function grep_syscall_def()
########################################################################
# Linux man-pages
-# man_section() prints a specific manual page section (DESCRIPTION, SYNOPSIS,
+# man_section() prints specific manual page sections (DESCRIPTION, SYNOPSIS,
# ...) of all manual pages in a directory (or in a single manual page file).
-# Usage example: .../man-pages$ man_section man2 SYNOPSIS;
+# Usage example: .../man-pages$ man_section man2 SYNOPSIS 'CONFORMING TO';
function man_section()
{
if ! [ -v 2 ]; then
- >&2 echo "Usage: ${FUNCNAME[0]} <dir> <section>";
+ >&2 echo "Usage: ${FUNCNAME[0]} <dir> <section>...";
return ${EX_USAGE};
fi
- find "${1}" -type f \
- |xargs grep -l "\.SH ${2}" \
+ local page="$1";
+ shift;
+ local sect="$@";
+
+ find "${page}" -type f \
+ |xargs wc -l \
+ |grep -v -e '\b1 ' -e '\btotal\b' \
+ |awk '{ print $2 }' \
|sort -V \
|while read -r manpage; do
- <${manpage} \
- sed -n \
- -e '/^\.TH/,/^\.SH/{/^\.SH/!p}' \
- -e "/^\.SH ${2}/p" \
- -e "/^\.SH ${2}/,/^\.SH/{/^\.SH/!p}" \
+ cat \
+ <(<${manpage} sed -n '/^\.TH/,/^\.SH/{/^\.SH/!p}') \
+ <(for s in ${sect}; do
+ <${manpage} \
+ sed -n \
+ -e "/^\.SH ${s}/p" \
+ -e "/^\.SH ${s}/,/^\.SH/{/^\.SH/!p}"; \
+ done;) \
|man -P cat -l - 2>/dev/null;
done;
}