Почему это не может сломать предупреждение строки из grep справочной страницы gcc?

Я пытался найти строку, заканчивающуюся на -s, с помощью следующей команды, но получил предупреждения:

$ man gcc | grep '\-s$'
<standard input>:4808: warning [p 54, 13.2i]: can't break line
$ man gcc | egrep '\-s$'
<standard input>:4808: warning [p 54, 13.2i]: can't break line

Ниже моя среда разработки:

$ uname -a
Linux localhost 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt20-1+deb8u1 (2015-12-14) x86_64 GNU/Linux

$ gcc --version
gcc (Debian 4.9.2-10) 4.9.2
Copyright (C) 2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

person wlnirvana    schedule 05.01.2016    source источник


Ответы (1)


Обычно man форматирует содержимое в соответствии с шириной терминала. Вы перенаправляете его вывод в канал, у которого нет «ширины экрана», поэтому он форматируется с использованием ширины по умолчанию, равной 80 символам. Некоторые справочные страницы имеют таблицы шириной более 80 символов, поэтому вы получаете предупреждение «невозможно разорвать строку». Попробуй это:

$ MANWIDTH=160 man gcc | grep '\-s$'
person poke53280    schedule 22.07.2018
comment
Почему-то проблема не может быть воспроизведена на моей текущей версии Debian 9.5 с gcc 6.3. Но я смог получить ошибку MANWIDTH=10 man gcc | grep '\-s$', поэтому я думаю, что ваше решение действительно сработает. Спасибо за ответ! - person wlnirvana; 23.07.2018