Описание тега boa
Я не знаю, что вы на самом деле пытаетесь сделать (ваши объяснения не имеет смысла), поэтому я буду отвечать только объяснить, что команды, которые вы выложили вообще. Как отметил в комментарии, вполне возможно, что вы столкнулись с ошибка в старой версии грэп; попробовать более свежую версию (например, на современный дистрибутив Linux или от доморощенного).
Поиск grep для строк, содержащих матч по указанному шаблону. Вывод команды grep-это вся строка, независимо от того, какой частью линии совпадают. (Опция -o для
изменения этого.) Например вычленить test.txt
печатает все строки, содержащие это
. Все линии, не просто это
.
В частности, если шаблон может соответствовать пустая строка, то команда grep печати всех строк. Например, так \?
это ноль-или-один оператор, команда grep 'а?' test.txt
печатает все строки, которые содержат один
или содержать пустые строки. Поскольку все линии содержат пустую строку, печатает все строки.
Аналогично команда grep "\(найти этот\)\?"
печатает все строки, которые содержат либо найти такой
, либо пустую строку, поэтому он печатает все строки. Оператор \?
применяется для группы найти этот
(обратный слеш-скобки разграничивают группы в стандартном синтаксисе регулярных выражений для grep).
Подсветка наносится поверх линии поведения. Когда есть несколько способов, чтобы соответствовать линии, это не определено, какой частью команды grep будет рассматривать как соответствие, за исключением того, что документации (как в GNU grep в 2.25) говорится, что непустое матч будет использоваться, если это возможно. Я думаю, что в GNU grep использует самый длинный матч.
Обратите внимание, что операторы никогда не обращался на “слова”. Они относятся к предыдущим персонажем или группой в скобках. Например найти это\?
означает “как найти этот
или найти Тхи
” — в \?
оператор применяется к последнему с
только. Чтобы соответствовать либо найти
или найти этого
, использовать группа: найти\( эта\)\?
.