less 模式 - 以 [ ] 或 $ 结尾

less 模式 - 以 [ ] 或 $ 结尾

参考我可以获取 bash 内置命令的单独手册页吗

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

该函数将直接跳转到所需的 bash 手动参数部分。

我想让它动态接受任何手动名称和手动参数,所以我将此函数更改为:

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

它完美地适用于:

$ 超人 bash 类型

并跳转到所需的手册页部分:

在此输入图像描述

但它不适用于以换行符结尾的部分。我需要将其更改为:

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

然后运行$ superman gcc Wall就能跳转到Wall参数:

在此输入图像描述

如何结合[ ]$成为[ ] OR $? IE以“至少一个空格”或“换行符”结尾

我尝试过$ man gcc | less -p "^[ ]+[-]*Wall[ |$]",但不起作用。

请注意,我接受这种不需要的跳转,它以结尾[ ]但不是真正的开头,因为我相信如果正则表达式是[ ]OR ,它是无法解决的$

在此输入图像描述

[感谢您的回答]

我想在这里分享我的最终形式:

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,optiongcc要求,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 _HPPAsuperinfo -i gcc werrorsuperinfo -i gcc wlsuperinfo -i mplayer scaletemposuperinfo -i mplayer statssuperinfo -i ls -f和进行测试superinfo -i bash -a(这里使用减号有很大区别)。of使用的Unicode 左单引号。-fls

答案1

我相信您误解了正则表达式[中方括号的含义。]注意你的模式:

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

[ ]与(单个空格)完全相同并且[-]与 完全相同-。并且在该模式的最后部分,[foo|bar]并不表示“要么foobar”。

您要找的是( |$).这是匹配一件事或另一件事的语法。 (由于美元符号的原因,您还需要用单引号或反斜杠而不是双引号来引用模式的该部分)。

[thing]表示一个字符类:它匹配thing

答案2

[ ]和怎样组合$

([ ]|$)或者( |$)

相关内容