![lessパターン - [ ] または $ で終わる](https://rvso.com/image/97017/less%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%20-%20%5B%20%5D%20%E3%81%BE%E3%81%9F%E3%81%AF%20%24%20%E3%81%A7%E7%B5%82%E3%82%8F%E3%82%8B.png)
参照する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 $
?すなわち「少なくとも 1 つのスペース」または「改行」で終わる。
試してみました$ man gcc | less -p "^[ ]+[-]*Wall[ |$]"
が、うまくいきませんでした。
この望ましくないジャンプは endswith です[ ]
が、実際にはセクションの開始ではありません。正規表現が[ ]
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
from gcc
require ,
。scaletempo
from mplayer
require [
、およびscale
from 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
、ここで大きな違いが生じます)。ので使用されるUnicodeの左一重引用符。superinfo -i gcc wl
superinfo -i mplayer scaletempo
superinfo -i mplayer stats
superinfo -i ls -f
superinfo -i bash -a
’
-f
ls
答え1
正規表現における[
角括弧の意味について誤解されていると思います。パターンに注意してください:]
^[ ]+[-]*Wall[ |$]
[ ]
は(スペース 1 つ)とまったく同じであり、
[-]
は とまったく同じです-
。また、パターンの最後の部分では、は「または」[foo|bar]
を意味しません。foo
bar
探しているのは です( |$)
。これは、1 つの項目または別の項目を一致させるための構文です。(ドル記号があるため、パターンのその部分を二重引用符ではなく一重引用符またはバックスラッシュで囲む必要もあります)。
[thing]
は文字クラスを表します。、、、、または のいずれかt
に一致h
しi
ます。n
g
答え2
[ ]
と を組み合わせるにはどうすればいいですか$
?
([ ]|$)
または( |$)