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
。这不会有什么坏处。