मैन पेज के अंदर हाइफ़न युक्त पैटर्न को कैसे खोजें?


11

मैं सभी मानव पृष्ठों के अंदर हाइफ़न युक्त एक पैटर्न की खोज करने के लिए एक कमांड खोजने की कोशिश कर रहा हूं।

मैंने man manइन 3 विकल्पों को देखा , और पाया:

-K, --global-apropos

सभी मैन्युअल पृष्ठों में पाठ खोजें। यह एक क्रूर-बल खोज है, और इसमें कुछ समय लगने की संभावना है; यदि आप कर सकते हैं, तो आपको उन पृष्ठों की संख्या को कम करने के लिए एक अनुभाग निर्दिष्ट करना चाहिए जिन्हें खोजने की आवश्यकता है। यदि --regexविकल्प का उपयोग किया जाता है तो खोज शब्द सरल तार (डिफ़ॉल्ट) या नियमित अभिव्यक्ति हो सकते हैं ।

-w, --where, --path,--location

वास्तव में मैनुअल पृष्ठों को प्रदर्शित न करें, लेकिन फॉर्मेट की जाने वाली स्रोत nroff फ़ाइलों का स्थान प्रिंट करें।

-S list, -s list,t--sections=list

सूची खोज करने के लिए आदेश विशिष्ट मैनुअल अनुभागों की एक बृहदान्त्र या अल्पविराम से अलग सूची है। यह विकल्प $MANSECTपर्यावरण चर को ओवरराइड करता है। ( -sवर्तनी प्रणाली V के साथ संगतता के लिए है)

मैंने उन्हें उस पैटर्न की खोज करने के लिए संयोजित करने का प्रयास किया है, mark-modified-linesजो इसमें वर्णित एक रीडलाइन विकल्प है man bash:

$ man -s1 -Kw mark-modified-lines

लेकिन यह कोई पृष्ठ नहीं ढूंढता है:

No manual entry for mark-modified-lines

और कमांड कोड के साथ बाहर निकलता है 16
मैंने सोचा था कि शायद कमांड का सिंटैक्स गलत था, लेकिन ऐसा नहीं लगता है, क्योंकि यह कमांड मेरे सिस्टम पर 5 मैन पेजों को सही ढंग से ढूंढता है जिसमें शब्द शामिल हैं guitar:

$ man -s1 -Kw guitar

  /usr/share/man/man1/ffmpeg-all.1.gz
  /usr/share/man/man1/ffserver-all.1.gz
  /usr/share/man/man1/ffplay-all.1.gz
  /usr/share/man/man1/ffmpeg-filters.1.gz
  /usr/share/man/man1/ffprobe-all.1.gz

मुझे लगा कि शायद शब्द में हाइफ़न एक समस्या का कारण बना। इसमें man bash, मुझे वह --regexविकल्प मिला, जो इस प्रकार है:

--regex

सभी पृष्ठों को उनके नाम या उनके विवरण के किसी भी भाग के साथ दिखाएं, जो प्रत्येक पृष्ठ तर्क को एक नियमित अभिव्यक्ति के रूप में मेल खाते हैं apropos(1)। चूंकि नियमित अभिव्यक्ति की खोज करते समय "सर्वश्रेष्ठ" पृष्ठ चुनने का कोई उचित तरीका नहीं है, इसलिए यह विकल्प निहित है -a

मैंने इस विकल्प का उपयोग करने की कोशिश की और शब्द mark-modified-linesको रेगेक्स के mark.modified.linesसाथ बदल दिया, जहां हाइफ़न स्वयं को मेटाचैकर से बदल दिया जाता है .जो किसी भी चरित्र से मेल खाना चाहिए:

$ man -s1 -Kw --regex 'mark.modified.lines'

यह अभी भी किसी भी पेज को प्रिंट नहीं करता है, जबकि मुझे पता है कि टेक्स्ट bashमैन पेज में लिखा गया है ।

.इस कमांड के बाद से रेगेक्स में मेटाचैकर अपेक्षित रूप से पार्स किया जा रहा है:

$ man -s1 -Kw --regex 'mark.mo'

प्रिंटों:

  /usr/share/man/man1/x11perfcomp.1.gz
  /usr/share/man/man1/xditview.1.gz

और ये 2 मैनपेज ( x11perfcomp, xditview) दोनों रेगेक्स से मेल खाते हैं mark.mo। विशेष रूप से, man x11perfcompइस पंक्ति में शामिल हैं:

Mark Moraes wrote the original scripts to compare servers.
^^^^^^^

और man xditviewइस पंक्ति में शामिल हैं:

    Mark Moraes (University of Toronto)
    ^^^^^^^

हालाँकि, man -s1 -Kw --regex 'mark.mo'बैश मैन पेज को प्रिंट नहीं करता है:

/usr/share/man/man1/bash.1.gz

जबकि मुझे उम्मीद थी कि इसमें यह लाइन होगी:

mark-modified-lines (Off)
^^^^^^^

क्या मैन पेजों के अंदर हाइफ़न युक्त पैटर्न की खोज करना संभव है?

जवाबों:


15

man -Kमैन्युअल पृष्ठों के स्रोत कोड को खोजता है, न कि उनके प्रदान किए गए फॉर्म (जैसा कि प्रदर्शित होता है man)। हाइफ़न एन्कोडेड हैं \-, इसलिए आपको उसकी खोज करने की आवश्यकता है:

man -s1 -Kw 'mark\-mo'

हां, यह बल्कि अस्पष्ट है। आदमी पेज का उल्लेख है, के विवरण में विकल्प, किman-K

ध्यान दें कि यह मैन्युअल पृष्ठों के स्रोतों को खोजता है , न कि प्रदान किए गए पाठ को, और इसलिए स्रोत फ़ाइलों में टिप्पणियों जैसी चीजों के कारण गलत सकारात्मकताएं शामिल हो सकती हैं। प्रस्तुत पाठ की खोज करना बहुत धीमा होगा।

लेकिन इसे सही ढंग से उपयोग करने से आपके द्वारा खोजे जा रहे पाठ के स्रोत प्रतिनिधित्व को जानना शामिल है।


1
अस्पष्ट करें? हाँ। इसके अलावा, यह एक बग है।
कुबंझक

@kubanczyk अच्छी तरह से, यह कल्पना से मेल खाता है, लेकिन हाँ, मैं सहमत हूँ कि कल्पना छोटी गाड़ी है ;-)।
स्टीफन किट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.