Regular-Expression

更少的模式 - 以或 $

  • October 22, 2016

請參閱can-i-get-individual-man-pages-for-the-bash-builtin-commands

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 $?即以“至少一個空格”或“換行符”結尾

我試過$ man gcc | less -p "^[ ]+[-]*Wall[ |$]"了,但它不起作用。

請注意,我接受這種不受歡迎的跳轉,它以結尾[ ]但不是真正的開始,因為我相信如果正則表達式是[ ]OR ,它是無法解決的$

在此處輸入圖像描述

$$ Thanks for answers $$ 我想在這里分享我的最終表格:

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要求,scaletempomplayer要求[scalemplayer要求=

我也寫過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 的左單引號-fof使用ls

我相信您對正則表達式[中方括號的含義有誤。]注意你的模式:

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

[ ]完全一樣 (a single space) and [-]is just exactly the same as-. And in the final part of the pattern, [foo|bar]does not signify "eitherfooorbar".

What you're looking for is ( |$)`. That’s the syntax for matching one thing OR another thing. (You’ll also need to quote that part of the pattern with single quotes or a backslash instead of double quotes, because of the dollar sign).

[thing] denotes a character class: it matches either t, h, i, n, or g.`

引用自:https://unix.stackexchange.com/questions/318195