私のシステムに何かが変更されたかどうかはわかりませんが、私のgrep
コマンドでUnixのマニュアルページをフィルタリングすることはうまくいかないことを発見しました。何が問題なのかご存知ですか?
例えばjq マニュアルページ次のコードでコンパイルされました。
.
.IP "\(bu" 4
\fB\-\-slurp\fR/\fB\-s\fR:
.
.IP
Instead of running the filter for each JSON object in the input, read the entire input stream into a large array and run the filter just once\.
.
スイッチをすばやく見つけるには、通常、次のターミナルセッション--slurp
に示すようにjq
マニュアルページをフィルタリングします。grep
$ man jq | grep -- --slurp
$
何も返されない方法に注意してください。奇妙です。予想される結果は次のとおりです。
$ man jq | grep -- --slurp
• --slurp/-s:
これは、実際にman jq
コマンドを実行し、/
検索キー入力を使用してから検索を使用すると機能する--slurp
ため、予想される現象です。
# ...
• --slurp/-s:
Instead of running the filter for each JSON object in the input, read the entire input stream into a large array and run the filter just once.
特殊文字に問題があるようですがよくわかりません。コマンドを通してマニュアルページを置こうとしましたが、cat
それも機能しませんでした。また、すべての特殊文字を削除してみました。Linuxテキストからすべての特殊文字を削除する方法- しかしそれもできません。
$ man jq | cat | grep -- --slurp
$
$ man jq | sed $'s/[^[:print:]\t]//g' | grep -- --slurp
$
関連がある場合、私のシステムの詳細は次のとおりです。
$ neofetch --off
OS: macOS 13.0.1 22A400 x86_64
Host: MacBookPro16,1
Kernel: 22.1.0
Uptime: 6 days, 1 hour, 3 mins
Packages: 145 (brew)
Shell: bash 3.2.57
Resolution: 1792x1120@2x
DE: Aqua
WM: Quartz Compositor
WM Theme: Blue (Light)
Terminal: iTerm2
Terminal Font: Monaco 12
CPU: Intel i7-9750H (12) @ 2.60GHz
GPU: Intel UHD Graphics 630, AMD Radeon Pro 5300M
Memory: 10425MiB / 16384MiB
ベストアンサー1
私のMacのラップトップであなたのようなものを見ました。私は設定や環境変数のman -P cat
代わりにポケットベルをcatに設定しました。マニュアルページを閲覧したところ、最後に次のことがわかりました。PAGER
MANPAGER
man
To get a plain text version of a man page, without backspaces and underscores, try
# man foo | col -b > foo.mantxt
だから私はそれを試み、引数行を含むman jq | col -b | grep slurp
その中に行を得ました。slurp
--slurp
私の考えに最適な手がかりは、「というフレーズのマニュアルページです。バックスペースキーやアンダースコアなし'。もちろん、各文字の間に2文字を許可すると、slurp
予想される行が表示されます。
man -P cat jq | grep s..l..u..r..p
od -a
検査ラインの1つを使用すると、--slurp
次のような結果が得られます。
0000420 sp U s e sp - bs - - bs - s bs s l bs
0000440 l u bs u r bs r p bs p f bs f i bs i
0000460 l bs l e bs e sp i n s t e a d . nl
Use --slurpfile instead.
これは、レンダラーが明らかにバックスペースキーを使用し、文字列の太字印刷を示すために文字を再印刷することを示す行の一部です--slurpfile
。バックスペースキーと追加文字は単純なgrepコマンドを無効にします。 (私も)
したがって、col -b
以前にマニュアルページをパイピングすると、目的のgrep
方法で出力を取得できるように見えます。