![重定向`man的输出` to file 在 OS X 上生成带有大量 `^H` 字符的文件](https://linux22.com/image/6696/%E9%87%8D%E5%AE%9A%E5%90%91%60man%E7%9A%84%E8%BE%93%E5%87%BA%60%20to%20file%20%E5%9C%A8%20OS%20X%20%E4%B8%8A%E7%94%9F%E6%88%90%E5%B8%A6%E6%9C%89%E5%A4%A7%E9%87%8F%20%60%5EH%60%20%E5%AD%97%E7%AC%A6%E7%9A%84%E6%96%87%E4%BB%B6%20.png)
使用 BSD 实用程序的 OS X (10.9.5) 中会出现以下行为,但使用 GNU 实用程序的 Linux (Ubuntu 15.10) 中不会出现以下行为。
操作系统:
$ man -v
man, version 1.6c
Linux:
$ man --version
man 2.7.4
我正在尝试编写一个 shell 脚本来自动解析给定程序支持的选项,以便在 bash/tcsh 自动完成中使用。例如,这是在终端中查看时按名称 perl 输出的名称和概要部分。
$ man perl | cat
NAME
perl - The Perl 5 language interpreter
SYNOPSIS
perl [ -sTtuUWX ] [ -hv ] [ -V[:configvar] ]
[ -cw ] [ -d[t][:debugger] ] [ -D[number/list] ]
[ -pna ] [ -Fpattern ] [ -l[octal] ] [ -0[octal/hexadecimal] ]
[ -Idir ] [ -m[-]module ] [ -M[-]'module...' ] [ -f ]
[ -C [number/list] ] [ -S ] [ -x[dir] ]
[ -i[extension] ]
[ [-e|-E] 'command' ] [ -- ] [ programfile ] [ argument ]...
$ man perl > /tmp/perl.out
我第一次怀疑的时候
$ </tmp/perl.out awk '/SYNOPSIS/ {print}'
没有打印任何行,然后我打开文件vi
并看到了这一点。到底为什么有这么多不必要的重复字符和^H
字符。
N^HNA^HAM^HME^HE
perl - The Perl 5 language interpreter
S^HSY^HYN^HNO^HOP^HPS^HSI^HIS^HS
p^Hpe^Her^Hrl^Hl [ -^H-s^HsT^HTt^Htu^HuU^HUW^HWX^HX ] [ -^H-h^Hhv^Hv ] [ -^H-V^HV[:_^Hc_^Ho_^Hn_^Hf_^Hi_^Hg_^Hv_^Ha_^Hr] ]
[ -^H-c^Hcw^Hw ] [ -^H-d^Hd[t^Ht][:_^Hd_^He_^Hb_^Hu_^Hg_^Hg_^He_^Hr] ] [ -^H-D^HD[_^Hn_^Hu_^Hm_^Hb_^He_^Hr_^H/_^Hl_^Hi_^Hs_^Ht] ]
答案1
的输出man
不是纯文本。尝试使用man perl | col -b
代替。