하이픈으로 연결된 옵션에 대한 명령의 맨 페이지를 grep


18

스크롤하지 않고 -iswitch in grep명령 의 사용법을 알고 싶다고 가정 해보십시오 . 해당 명령에 대한 사양이 필요하거나 적어도 화면에 먼저 표시됩니다. 그래서 방법? 당신이 말할 수 있듯이 일반적으로뿐만 아니라 grep -i.


답변:


14

이 간단한 sed명령을 사용해보십시오

$ man grep | sed -n '/-i, --ignore-case/,+2p'
    -i, --ignore-case
              Ignore  case  distinctions  in  both  the  PATTERN and the input
              files.  (-i is specified by POSIX.)

설명:

sed -n '/-i, --ignore-case/,+2p'

        |<-Search pattern->|

검색 패턴을 포함하는 행을 검색 패턴 행 바로 아래에있는 2 개의 행과 함께 인쇄합니다.

또는

아래처럼 검색 패턴에 플래그 만 제공하면됩니다.

avinash@avinash-Lenovo-IdeaPad-Z500:~$ man grep | sed -n '/ *i, -/,+3p'
       -i, --ignore-case
              Ignore  case  distinctions  in  both  the  PATTERN and the input
              files.  (-i is specified by POSIX.)

avinash@avinash-Lenovo-IdeaPad-Z500:~$ man grep | sed -n '/ *V, -/,+3p'
       -V, --version
              Print  the version number of grep to the standard output stream.
              This version number should be included in all bug  reports  (see
              below).
avinash@avinash-Lenovo-IdeaPad-Z500:~$ man grep | sed -n '/ *F, -/,+3p'
       -F, --fixed-strings
              Interpret PATTERN as a  list  of  fixed  strings,  separated  by
              newlines,  any  of  which is to be matched.  (-F is specified by
              POSIX.)
avinash@avinash-Lenovo-IdeaPad-Z500:~$ man grep | sed -n '/ *G, -/,+3p'
       -G, --basic-regexp
              Interpret PATTERN  as  a  basic  regular  expression  (BRE,  see
              below).  This is the default.

빠른 액세스 를 위해이 스크립트를 .bashrc( $HOME/.bashrc)에 추가 할 수 있습니다 .

mangrep(){
    USAGE="mangrep <application> <switch>"
    if [[ "$#" -ne "2" ]]
      then
          echo "Usage: $USAGE"
      else
          man "$1" | sed -n "/ *"$2", -/,+3p"
    fi
}

23

터미널에서 아래 명령을 입력하십시오.

man grep

그런 다음 슬래시 문자를 입력 /하고 검색을 쓰기 같은 -i, 다음에 Enter. 검색 문자열이 처음 나타날 때 커서를 놓습니다. 를 누르면 n커서가 다음 항목으로 이동합니다. Shift+를 누르면 n커서가 이전 항목으로 이동합니다.


1
그것은 모두 찾습니다 -i'의 S man greppage.But 영업 이익에 관한 설명 만 원하는 -i사람이 페이지에 플래그를.
Avinash Raj

3
@AvinashRaj 아니오, 각 발생을 순환 할 수 있습니다 -i. 바로 OP가 원하는 것입니다.
terdon

9

가장 간단한 접근 방식은 /@girardengo가 제안한대로 검색 하는 것이지만, 내가 찾은 grep대신 사용할 수도 있습니다 sed.

$ man grep | grep -A 1 '^ *-i'
   -i, --ignore-case
          Ignore  case  distinctions  in  both  the  PATTERN and the input
          files.  (-i is specified by POSIX.)

-A N수단 "일치 한 후 N 라인을 인쇄 할 수 있습니다. 그냥 트릭을 유사하게 다음 몇 줄, 얻을 Avinash의 sed 접근 방식을.


3

manpres 내부 검색 기능을 사용하고 "s"찾고있는 키를 입력 한 다음 (-i의 경우) i를 입력 할 수 있습니다.


나는 로그 파일을 참조 그 후 그 I 프레스이야 후 나는 남자 GREP을 입력 후 나는 -i를 입력하고 Enter 키를하지만 난에 대한 설명을 참조하지 않습니다 아니면 내가 모르는 뭔가를해야만이 있음
모하마드 레자 Rezwani은


2

내가 아는 가장 효율적인 방법은 man 페이지를 검색하는 -i것 입니다 (이 사이트는 내 코드를 렌더링하지 못하는 것 같습니다. 의미는입니다 <space><space><space>-i). 그것은 3 개의 공백 (더 많거나 적은 공백이 필요할 수 있음)과 찾고있는 플래그입니다. 그것은 거의 항상 내 경험에서 작동하며 작동하지 않는 경우 변형을 변경할 수 있습니다.

플래그의 실제 문서는 일반적으로 들여 쓰기 때문에 작동합니다. 일반적으로 앞에 공백이 하나뿐이므로 다른 섹션에서 플래그에 대한 다른 언급을 찾지 않습니다.


1

모든 답변을 통해 괜찮을 수도 있지만 모든 문서가 아닌 문서에만 집중하고 있다고 생각합니다. 예를 들어, -igrep 문서 의 스위치 를 찾으려면 다음 을 수행하십시오.

info grep Invoking Command-line\ Options Matching\ Control

"grep"에 대한 모든 정보, "일치 제어"에 대한 특정 "명령 줄 옵션"을 "호출"하는 방법을 찾을 수 있습니다. 슬프게도 그것보다 더 깊은하지 않지만이있다 -i, -y, --ignore-case최초 25 선에, 당신이하지 않는 것이 합리적인 일이 모든 방법 아래로 스크롤합니다.

이 솔루션은보다 유연하며 모든 정보 페이지를 검색 할 수 있습니다.

info --apropos=--ignore-case
"(coreutils)join invocation" -- --ignore-case <1>
"(coreutils)uniq invocation" -- --ignore-case <2>
"(coreutils)sort invocation" -- --ignore-case
"(gettext)msggrep Invocation" -- --ignore-case, ‘msggrep’ option
"(grep)Matching Control" -- --ignore-case

( 너무 흔했기 때문에 --ignore-case대신에 사용해야 -i했지만 어떤 경우에도 출력을 정보로 처리 할 수 ​​있습니다)

이 경우 정보 페이지 이름과 정확한 섹션이 모두 있습니다. 아, 거의 잊어 버렸습니다 tab. 정보 페이지의 대부분 섹션을 통해 길을 갈 수도 있습니다 .


1

Perl과 "문단 모드"를 사용하여 관련 단락 만 추출 할 수 있습니다.

man grep | perl -00 -ne 'print if / -i/'

1

man페이지 에서 주어진 옵션을 찾는 가장 좋아하는 방법 은과 같은 정규 표현식을 사용하는 것 \s{2,}-option입니다. 질문에 man grep대해서는 정규식을 입력하고 입력하십시오.

/\s{3,}-i

또는

/ {3,}-i
 ^------------- space here

-i세 개 이상의 공백이 뒤에있을 때만 일치 합니다.


0

less의 호출기로 기본적으로 사용되는 것처럼 환경 변수를 man사용 하여 페이지를 열 LESS때 검색 할 패턴을 전달할 수 있습니다 less. 이것은 예를 하 동일 man ls하고 옵션을 검색 --all하거나 -a입력으로 /하고, 패턴 등을 입력 --all하거나 -a.

이 모든 작업은 다음과 같이 수행 할 수 있습니다.

LESS='+/--all' man ls

또는

LESS='+/-a' man ls

다음에 검색 할 내용을 입력하십시오 /.

아마도 이것은 --all짧은 옵션 (예 :) 과 비교 하여 긴 옵션 (예 :)에 가장 적합합니다 -a.


0

당신이 원하는 경우 하이픈으로 시작하는 패턴에 대한 결과, 사용 패턴 전에 당신은 지정합니다. 사용 예 :grepman <program>--man find

man find | grep -- -type

옵션을 설명하는 전체 섹션과 같은 추가 정보를 원하면 sed다음을 사용하십시오 .

$ man find | sed -n '/-mindepth/,/^$/p'
   -mindepth levels
          Do  not apply any tests or actions at levels less than levels (a
          non-negative integer).  -mindepth  1  means  process  all  files
          except the command line arguments.

출처

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.