less pattern - endswith [] ou $

1

Consulte can-i-get-man-individual-pages-for-the-bash-builtin-commands :

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

Esta função irá pular diretamente para a seção de parâmetro manual bash desejada.

Eu quero fazer com que aceite qualquer nome de manual e parâmetro manual na hora, então eu mudo esta função para:

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

Funciona perfeitamente com:

$ superman bash type

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

Masnãofuncionanaseçãoqueterminacomnovalinha.Precisoalterá-lopara:

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

Em seguida, execute $ superman gcc Wall para saltar para o parâmetro Wall :

Comocombinar[]e$como[]OR$?ouseja,terminacom"pelo menos um espaço" OU "nova linha" .

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

Por favor, note que eu aceito por este salto indesejado, que é endswith [ ] mas não é realmente um começo de seção, porque eu acredito que é insolúvel se regex é [ ] OR $ :

[Obrigadopelasrespostas]

Euquerocompartilharmeuformuláriofinalaqui:

functionsuperman(){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 wl , o que significa que não diferenciar maiúsculas de minúsculas para pular para a seção -Wl,option . -Wl,option de gcc requer , . scaletempo de mplayer exigem [ e scale de mplayer exigem =

Eu também escrevi para info version:

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 -f e superinfo -i bash -a (com sinal de menos, faça grande diferença aqui). MARCA ÚNICA DE COTAÇÃO ESQUERDA DO Unicode usada por -f de ls .

    
por 林果皞 22.10.2016 / 20:21

2 respostas

1

Acredito que você esteja enganado sobre o significado de [ colchetes ] em uma expressão regular. Anote 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 " foo ou 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] indica uma classe de caracteres: corresponde a t , h , i , n ou g .

    
por 22.10.2016 / 20:33
1

How to combine [ ] and $ ?

([ ]|$) ou ( |$)

    
por 22.10.2016 / 20:31