मैं सभी मानव पृष्ठों के अंदर हाइफ़न युक्त एक पैटर्न की खोज करने के लिए एक कमांड खोजने की कोशिश कर रहा हूं।
मैंने 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)
^^^^^^^
क्या मैन पेजों के अंदर हाइफ़न युक्त पैटर्न की खोज करना संभव है?