我确实使用grep,但我希望能有所改善。
关于这个问题。我想缩小man
条目以找到-v
中grep -v 'pattern' filename
代表的内容的解释,主要是:
-v, --invert-match
Selected lines are those not matching any of the specified patterns.
因此,要在包含-v
的行之后找到接下来的五行,我尝试了:
man grep | grep -A 5 -v
和
man grep | grep -A 5 '-v'
但他们回来了:
usage: grep [-abcDEFGHhIiJLlmnOoqRSsUVvwxZ] [-A num] [-B num] [-C[num]]
[-e pattern] [-f file] [--binary-files=value] [--color=when]
[--context[=num]] [--directories=action] [--label] [--line-buffered]
[--null] [pattern] [file ...]
这让我感到困惑:
man grep | grep -A 5 'Selected'
和
man grep | grep -A 5 Selected
做好工作。
我的做法有什么问题?有没有更简单的方法来实现我的需求?
答案 0 :(得分:0)
一种方法是直接解析命令的Info
文档。如果您运行info grep
(或其他命令),您将经常会找到更详细,结构更好的文档,这样您就可以直接指出所需的部分。
这是一个打印出选项/变量/ etc的相关Info
部分的函数:
info_search() {
info --subnodes "$1" -o - 2>&- \
| awk -v RS='' "/(^|\n)(‘|'|\`)$2((,|\[| ).*)?(’|')\n/"
}
这适用于Linux / macOS / BSD。输出如下:
$ info_search grep -v ‘-v’ ‘--invert-match’ Invert the sense of matching, to select non-matching lines. (‘-v’ is specified by POSIX.)
$ info_search gawk RS 'RS == "\n"' Records are separated by the newline character ('\n'). In effect, every line in the data file is a separate record, including blank ...
$ info_search bash -i `-i' Force the shell to run interactively. Interactive shells are ...