हाइफ़ननेटेड विकल्पों के लिए कमांड का मैन पेज grep


18

मान लीजिए मैं बिना स्क्रॉल किए कमांड -iमें स्विच का उपयोग जानना चाहता हूं 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
यह सभी पृष्ठ का पता लगाएगा -iman grepलेकिन ओपी केवल -iमैन पेज में ध्वज से संबंधित विवरण चाहता है ।
अविनाश राज

3
@AvinashRaj नहीं, यह आपको प्रत्येक घटना के माध्यम से चक्र करने की अनुमति देगा -i। ठीक यही ओपी चाहता है।
टेराडॉन

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मतलब है "एक मिलान के बाद एन लाइनों को प्रिंट करें। अविनाश के sed दृष्टिकोण के समान अगली कुछ पंक्तियां प्राप्त करने के लिए एक चाल ।


3

आप खोज फ़ंक्शन का उपयोग अंदर कर सकते हैं man, बस "s", उस कुंजी को टाइप करें जिसकी आप तलाश कर रहे हैं, (-आई आपके मामले में) और इंट्रो दबाएं।


मैं टाइप करता हूं कि उसके बाद मैं grep टाइप करता हूं, उसके बाद मैं लॉग फाइल देखता हूं: उसके बाद मैं टाइप करता हूं -i और ENTER लेकिन मैं विवरण नहीं देखता हूं या कोई ऐसी
चीज है


2

मुझे पता है कि सबसे कुशल तरीका है, जिसके लिए मैन पेज खोजना है -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

आप केवल प्रासंगिक पैराग्राफ निकालने के लिए पर्ल और इसके "पैराग्राफ मोड" का उपयोग कर सकते हैं:

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

1

किसी manपृष्ठ में दिए गए विकल्प को खोजने के लिए मेरा पसंदीदा तरीका है , जैसे regex का उपयोग करना \s{2,}-option। हाथ में सवाल के लिए, आप कर सकते हैं man grepऔर फिर regex टाइप करें:

/\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.

स्रोत

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.