I am under mac os X and I want to find some words in the documentation of Homebrew.
This is a part of the documentation (man brew
):
I tried this command
man brew | grep -e 'another installed' --color -B 2
and it worked well, below the result:
o leaves: Show installed formulae that are not dependencies of another installed formula.
This command
man brew | grep -e 'leaves' --color -B 2
instead did not produce any output. So I tried to use
brew | grep -e 'leaves.*' --color -B 2
but it did not work too.
I want to use grep to find the word ‘leaves’ inside the documentation of Homebrew and print the nearest lines to be able to understand what this option mean. I know that maybe it is a stupid error but I am not able to figure out where it is. Can someone help me?
Advertisement
Answer
The problem is not with grep
so much as with man
. When you view a manual page, formatting codes are interspersed in order to make the text appear bold (or underlined, etc).
bash-3.2@yosemite$ man brew | grep l..e..a..v..e..s o leaves: Show installed formulae that are not dependencies of bash-3.2@yosemite$ man brew | grep l..e..a..v..e..s | xxd 0000000: 2020 2020 2020 202b 086f 2020 206c 086c +.o l.l 0000010: 6508 6561 0861 7608 7665 0865 7308 733a e.ea.av.ve.es.s: 0000020: 2053 686f 7720 2069 6e73 7461 6c6c 6564 Show installed 0000030: 2020 666f 726d 756c 6165 2020 7468 6174 formulae that 0000040: 2020 6172 6520 206e 6f74 2020 6465 7065 are not depe 0000050: 6e64 656e 6369 6573 2020 6f66 0a ndencies of.
The traditional workaround is to filter formatted output through colcrt
:
bash-3.2@yosemite$ man brew | colcrt | grep leaves + leaves: Show installed formulae that are not dependencies of
… but the resulting text is kind of crudely forced to ASCII only. A better solution for most people is to use LESS
as your manual pager.
bash-3.2@yosemite$ export PAGER=less bash-3.2@yosemite$ man brew # ... type /leaves at the `less` prompt o leaves: Show installed formulae that are not dependencies of another installed formula.