меньше шаблон - заканчивается на [ ] или $

меньше шаблон - заканчивается на [ ] или $

Ссылаться намогу-ли-я-получить-отдельные-man-страницы-для-встроенных-команд-bash:

bashman () { man bash | less -p "^       $1 "; }

Эта функция перейдет напрямую к нужному разделу параметров руководства bash.

Я хочу, чтобы он принимал любые ручные имена и ручные параметры «на лету», поэтому я изменяю эту функцию на:

function superman () {
    man "$1" | less -p "^[ ]+[-]*$2[ ]"
}

Идеально работает с:

$ супермен тип bash

И перейдите к нужному разделу страницы руководства:

введите описание изображения здесь

Но это не работает в разделе, заканчивающемся новой строкой. Мне нужно изменить это на:

function superman () {
    man "$1" | less -p "^[ ]+[-]*$2$"
}

Затем run $ superman gcc Wallсможет перейти к Wallпараметру:

введите описание изображения здесь

Как совмещать [ ]и $быть [ ] OR $? т.е.заканчивается "по крайней мере одним пробелом" ИЛИ "новой строкой".

Я пробовал $ man gcc | less -p "^[ ]+[-]*Wall[ |$]", но не работает.

Обратите внимание, что я принимаю этот нежелательный переход, который заканчивается [ ], но на самом деле не является началом раздела, поскольку я считаю, что это неразрешимо, если регулярное выражение — [ ]ИЛИ $:

введите описание изображения здесь

[Спасибо за ответы]

Я хочу поделиться здесь своей окончательной формой:

function superman () {
    if [[ "$1" == "-I" || "$1" == "-i" ]]; then
        man "$2" | less -I -p "^[ ]+-*$3( |=|,|$|\[)"
    else
        man "$1" | less -p "^[ ]+-*$2( |=|,|$|\[)"
    fi
}

Это сработает, если я запущу, superman -i gcc wlчто означает без учета регистра, чтобы перейти в -Wl,optionраздел. -Wl,optionиз gccrequire ,. scaletempoиз mplayerrequire [, и scaleиз mplayerrequire=

Я тоже написал для infoверсии:

function superinfo () {
    if [[ "$1" == "-I" || "$1" == "-i" ]]; then
        info "$2" | less -I -p "^ *‘*'*-*\** *$3’*( |=|,|$|\[|:|')"
    else
        info "$1" | less -p "^ *‘*'*-*\** *$2’*( |=|,|$|\[|:|')"
    fi
}

Протестировано с superinfo gcc _HPPA, superinfo -i gcc werror, superinfo -i gcc wl, superinfo -i mplayer scaletempo, superinfo -i mplayer stats, superinfo -i ls -f, и superinfo -i bash -a(со знаком минус здесь имеет большое значение). ЛЕВАЯ ОДИНАРНАЯ КАВЫЧКА Unicode используется -fв ls.

решение1

Я думаю, что вы ошибаетесь относительно значения [квадратных скобок ]в регулярном выражении. Обратите внимание на ваш шаблон:

^[ ]+[-]*Wall[ |$]

[ ]это то же самое, что (один пробел) и [-]это то же самое, что и -. И в последней части шаблона [foo|bar]не означает «либо, fooлибо bar».

То, что вы ищете, это ( |$). Это синтаксис для сопоставления одной вещи ИЛИ другой вещи. (Вам также нужно будет заключить эту часть шаблона в одинарные кавычки или обратную косую черту вместо двойных кавычек из-за знака доллара).

[thing]обозначает класс символов: он соответствует либо t, h, i, n, либо g.

решение2

Как объединить [ ]и $?

([ ]|$)или( |$)

Связанный контент