grep如何使用行首和结尾

时间:2019-12-22 11:11:25

标签: gcc grep manpage

我想阅读gcc手册页中的一个选项。所以我做了man gcc | grep -- '^-c'。错误是troff - cant break line,因为我的终端在屏幕的一半上。但是我通过声明MANWIDTH=1000 man gcc | grep -- '^-c'来解决此问题(感谢Why is this "can't break line" warning from grep of gcc man page?。但是不幸的是,它找不到该选项。没有begginig模式(只有-c:完整:{{ 1}},它将发现MANWIDTH=1000 man gcc | grep -- '-c'的所有出现,这已经很多了,但是特别是我要寻找的选项会被无用的搜索弄得一团糟,所以-c为什么不使用grep^作为行的开头和结尾?还是与终端窗口的大小(即,按宽度缩短)=行的锚点有关?然后我在没有全屏显示终端的情况下通过行首搜索grep?

PS:  我不知道为什么,当我声明MANWIDTH var时,尽管它很有价值,但它不会立即与man命令一起应用。也就是说,如果我先声明它,然后尝试处理某些事情(最终将其通过管道传送到grep以进行行搜索),则会再次出现错误:$

如此:

troff: warning: can't break line

1 个答案:

答案 0 :(得分:0)

-c不在行的开头,因为它不在左边距。您可以使用模式^\s*-c,该模式在行的开头和-c之间允许零个或多个空格字符。

但是,如果您想阅读-c命令的文档,最好使用info命令,至少在这种情况下:

info gcc --index-search=c

注意:要执行此操作,您需要安装gcc信息页面。例如,在Debian / Ubuntu系统上,您需要sudo apt-install gcc-doc

注意:对于大多数选项,gcc信息文件的作者选择不将前导连字符放在索引条目中。但是大多数信息文件都使用带有破折号和带有破折号的索引惯例(就像gcc带有一些-f选项一样)。尽管info会尝试找到最相关的索引匹配项,但是info索引搜索是文字字符串的子字符串匹配项(即没有正则表达式运算符),有时您会更喜欢用破折号搜索:

info grep --index-search=-E

或使用-all选项提供所有匹配索引条目的列表:

info grep --all --index-search=E

对于选项少于gcc的实用程序,您可以直接转到带有-O选项的选项列表。

info grep -O

最后,您的PS的答案:

如果您希望export MANWIDTH=1000是所有子进程可见的环境变量,请使用MANWIDTH