Gcc grep如何使用行的开头和结尾
我想阅读Gcc grep如何使用行的开头和结尾,gcc,grep,manpage,Gcc,Grep,Manpage,我想阅读gcc手册页中的一个选项。所以我做了mangcc | grep--'^-c'。错误是troff-无法断线,因为我的屏幕上有一半的终端。但是我通过声明MANWIDTH=1000-mangcc|grep--“^-c”(感谢:。但不幸的是,它找不到该选项。没有begginig模式(这只是-c:总之:MANWIDTH=1000人gcc | grep--'-c',它将找到所有出现的-c,这是退出了很多,但特别是我正在寻找的选项将被无用的搜索搞得一团糟。那么grep为什么不使用^和$作为开头和结尾呢
gcc
手册页中的一个选项。所以我做了mangcc | grep--'^-c'
。错误是troff-无法断线
,因为我的屏幕上有一半的终端。但是我通过声明MANWIDTH=1000-mangcc|grep--“^-c”
(感谢:。但不幸的是,它找不到该选项。没有begginig模式(这只是-c
:总之:MANWIDTH=1000人gcc | grep--'-c'
,它将找到所有出现的-c
,这是退出了很多,但特别是我正在寻找的选项将被无用的搜索搞得一团糟。那么grep
为什么不使用^
和$
作为开头和结尾呢行的长度?或者它是否与终端窗口的大小有关(即,通过宽度缩短)=行的锚定?然后我如何在不完全屏蔽终端的情况下通过行的开头使用grep进行搜索
附言:
我不知道为什么,当我声明MANWIDTH变量时,它不会立即应用于man命令,尽管它是值。也就是说,如果我先声明它,然后尝试对某个对象进行man操作(最终通过管道将其传递给grep进行行搜索),错误再次出现:troff:warning:无法断行
因此:
MANWIDTH=1000;
echo $MANWIDTH #output 1000
man gcc | grep -- '^-c'
troff: <standard input>:10635: warning [p 97, 19.0i]: can't break line
MANWIDTH=1000;
echo$MANWIDTH#输出1000
男子gcc |格雷普——“^-c”
troff::10635:警告[P97,19.0i]:无法断线
由于-c
不在左边距,因此-c
不在行首。您可以使用模式^\s*-c
,该模式允许在行首和-c
之间使用零个或多个空格字符
但是,如果您想阅读-c
命令的文档,最好使用info
命令,至少在这种情况下:
info gcc --index-search=c
注意:要使其工作,您需要安装gcc信息页面。例如,在Debian/Ubuntu系统上,您需要sudo apt安装gcc doc
注意:对于大多数选项,gcc信息文件的作者选择不在索引项中放置前导连字符。但大多数信息文件遵循使用破折号和破折号进行索引的惯例(就像gcc使用少数-f
选项那样)。虽然info
将尝试查找最相关的索引匹配,但info
索引搜索是文本字符串的子字符串匹配(即没有正则表达式运算符),有时您更喜欢使用破折号搜索:
info grep --index-search=-E
或者使用-all
选项提供所有匹配索引项的列表:
info grep --all --index-search=E
对于选项比gcc少的实用程序,您可以直接使用-O
选项转到选项列表
info grep -O
最后,回答您的问题:
如果希望MANWIDTH
成为所有子流程可见的环境变量,请使用export MANWIDTH=1000
。但是当我执行info gcc--index search=c
,然后找不到“c”
的索引项,为什么?@strostman:可能是因为您从未安装gcc信息文件。info gcc
只是显示吗您的输出与mangcc
相同吗?我要添加一个说明。@rasdman:sudo apt get install gcc doc
如果您使用的是Ubuntu/Debian顺便说一句:@rasdman:no,弄清楚您需要什么可能会很烦人。一般来说,如果您正在安装某个包x
,您还应该安装x-doc
(如果它存在的话)。但是,您自动安装的软件包可能包含信息文件,也可能不包含信息文件,而且安装哪个doc
软件包并不总是很明显。您当然可以尝试x-doc
。这不会有什么坏处。