请查看col(1),因为它col可以过滤掉退格序列。如果您等不及那么久
funnyprompt$ groff -t -e -mandoc -Tascii manpage.1 | col -bx > manpage.txt
选项-t和-e告诉groff使用tbl和eqn进行预处理。对于不需要预处理的 man 手册页来说,这有点过度,但除了浪费一些 CPU 周期外,没有坏处。另一方面,当实际需要时,不使用-t则会造成损害:表格的格式会非常糟糕。您甚至可以找出(或者更确切地说,是“猜测”)格式化特定groff文档(不仅仅是 man 手册页)所需的命令,通过执行
funnyprompt$ grog /usr/man/man7/signal.7 groff -t -man /usr/man/man7/signal.7 |
“Grog”代表 “GROff Guess”,顾名思义,它会进行猜测。如果它是完美的,我们就再也不需要选项了。我见过它在宏包和预处理器上猜测错误。这是我编写的一个小型 perl 脚本,可以删除页面页眉和页脚,从而在打印冗长而精细的 man 手册页时为您节省几页纸(并为大自然母亲节省一棵树)。将其保存在名为strip-headers& chmod 755 的文件中。
#!/usr/bin/perl -wn # make it slurp the whole file at once: undef $/; # delete first header: s/^\n*.*\n+//; # delete last footer: s/\n+.*\n+$/\n/g; # delete page breaks: s/\n\n+[^ \t].*\n\n+(\S+).*\1\n\n+/\n/g; # collapse two or more blank lines into a single one: s/\n{3,}/\n\n/g; # see what's left... print; |
您必须将其用作man命令之后的第一个过滤器,因为它依赖于groff输出的换行符数量。例如
funnyprompt$ man bash | strip-headers | col -bx > bash.txt