menos padrão - termina com [] ou $

menos padrão - termina com [] ou $

Referir-seposso obter páginas de manual individuais para os comandos internos do bash:

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

Esta função irá pular diretamente para a seção de parâmetros manuais do bash desejada.

Quero fazer com que ele aceite qualquer nome manual e parâmetro manual imediatamente, então mudo esta função para:

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

Funciona perfeitamente com:

$ superman tipo bash

E vá para a seção da página de manual desejada:

insira a descrição da imagem aqui

Mas não funciona na seção que termina com nova linha. Eu preciso mudar para:

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

Então run $ superman gcc Wallpoderá pular para Wallo parâmetro:

insira a descrição da imagem aqui

Como combinar [ ]e $ser [ ] OR $? ou sejatermina com "pelo menos um espaço" OU "nova linha".

Eu tentei $ man gcc | less -p "^[ ]+[-]*Wall[ |$]", mas não funciona.

Observe que aceito esse salto indesejado, que termina com, [ ]mas não é realmente o início da seção, porque acredito que é insolúvel se regex for [ ]OR $:

insira a descrição da imagem aqui

[Obrigado pelas respostas]

Quero compartilhar meu formulário final aqui:

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

Isso funcionará se eu executar, superman -i gcc wlo que significa que não faz distinção entre maiúsculas e minúsculas para pular para -Wl,optiona seção. -Wl,optionde gccexigir ,. scaletempode mplayerexigir [e scalede mplayerexigir=

Escrevi para infoa versão também:

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

Testado com superinfo gcc _HPPA, superinfo -i gcc werror, superinfo -i gcc wl, superinfo -i mplayer scaletempo, superinfo -i mplayer stats, superinfo -i ls -fe superinfo -i bash -a(com sinal de menos faz grande diferença aqui). MARCA DE CITAÇÃO ÚNICA ESQUERDA do Unicode usada por -fof ls.

Responder1

Acredito que você esteja enganado sobre o significado dos [colchetes ]em uma expressão regular. Observe seu padrão:

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

[ ]é exatamente igual a (um único espaço) e [-]é exatamente igual a -. E na parte final do padrão, [foo|bar]não significa “um fooou outro bar”.

O que você está procurando é ( |$). Essa é a sintaxe para combinar uma coisa OU outra coisa. (Você também precisará citar essa parte do padrão com aspas simples ou uma barra invertida em vez de aspas duplas, por causa do cifrão).

[thing]denota uma classe de caracteres: corresponde a t, h, i, nou g.

Responder2

Como combinar [ ]e $?

([ ]|$)ou( |$)

informação relacionada