![less 模式 - 以 [ ] 或 $ 結尾](https://rvso.com/image/97017/less%20%E6%A8%A1%E5%BC%8F%20-%20%E4%BB%A5%20%5B%20%5D%20%E6%88%96%20%24%20%E7%B5%90%E5%B0%BE.png)
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,option
從gcc
要求,
。scaletempo
來自mplayer
require[
和scale
來自mplayer
require=
我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
(這裡使用減號有很大差異)。of’
使用的Unicode 左單引號。-f
ls
答案1
我相信您誤解了正規表示式[
中方括號的意思。]
注意你的模式:
^[ ]+[-]*Wall[ |$]
[ ]
與(單一空格)完全相同且
[-]
與 完全相同-
。並且在該模式的最後部分,[foo|bar]
並不表示“要么foo
或bar
”。
您要找的是( |$)
.這是匹配一件事或另一件事的語法。 (由於美元符號的原因,您還需要用單引號或反斜線而不是雙引號來引用模式的該部分)。
[thing]
表示一個字元類別:它匹配t
、h
、i
、n
或g
。
答案2
[ ]
和怎樣組合$
?
([ ]|$)
或者( |$)