कम में मल्टीलाइन खोज कैसे करें?


18

में less, क्या आप /एक ऐसे पैटर्न का उपयोग करके खोज कर सकते हैं जिसमें गाड़ी वापसी और न्यूलाइन शामिल हैं? मुझे पता है कि आपके पैटर्न का उपयोग करके एक पंक्ति के साथ समाप्त हो सकता है $( मैं कम में एक खोज में नए अंक कैसे शामिल करूं? ), लेकिन मुझे पाठ से मेल खाने के लिए पैटर्न की आवश्यकता है जो कई लाइनों को फैलाता है।

मैंने कोशिश की \n, लेकिन वह केवल nचरित्र की खोज करता है।


क्या आपने \n+1 या उससे अधिक नई सुर्खियों के लिए प्रयास किया है?
ब्रॉक हेंसले

कौन सा लिनक्स वितरण, और क्या आपने पर्यावरण चर "लेस" को परिभाषित किया है?
harrymc

@harrymc बहुस्तरीय खोज के साथ कैसे मदद करेगा?
शशोअल्म

सूचना एकत्र करना।
harrymc

2
less( search.c:search_range()) के लिए स्रोत कोड की समीक्षा के आधार पर यह संभव नहीं है । खोज / मैच ऑपरेशन एक बार में एक ही नईलाइन-सीमांकित रेखा पर किया जाता है, इसलिए आप रेखा सीमाओं के साथ मेल नहीं खा सकते हैं। के line.c:forw_raw_line()रूप में "रीडलाइन" के कार्यान्वयन के लिए देखें search_range
zackse

जवाबों:


7

यह रेखा सीमाओं के साथ मेल करना संभव नहीं है, क्योंकि खोज फ़ंक्शन lessएक बार में एक ही नईलाइन-सीमांकित रेखा पर काम करता है। सिस्टम रेगेक्स कार्यान्वयन (GNU, POSIX, PCRE, आदि) की परवाह किए बिना यह मामला है।

कृपया ध्यान दें कि मुझे मेनलाइन के विकास के लिए आधिकारिक स्रोत का भंडार नहीं मिला है less, लेकिन यहां कोड की समीक्षा के प्रयोजनों के लिए, लिंक जो अनुसरण करते हैं, वे फ्रीबीएसडी कंट्रीब्यूट ट्री से हैं।

खोज देखें : सर्च ऑपरेशन के कार्यान्वयन के लिए search_range () । लूप इन में कॉल ..c: forw_raw_line () सामग्री के अगले न्यूलाइन-सीमांकित ब्लॉक को पुनः प्राप्त करने के लिए। उस ब्लॉक को match.c: match_pattern () में खोज पैटर्न (नियमित अभिव्यक्ति) निष्पादित किया जाता है।

कई लाइनों में मेल खाने के लिए, आपको एक अलग टूल का उपयोग करना होगा। एक विकल्प यह है कि आप अपने संपादक को छोड़ दें और दूसरों द्वारा सुझाई गई खोज क्षमताओं का उपयोग करें। आप vमें दबाकर संपादक को आमंत्रित कर सकते हैं less


2

यह सुनिश्चित नहीं है कि इसे कैसे करना है less, लेकिन आप इसे पूरा कर सकते हैं vim

http://vim.wikia.com/wiki/Search_across_multiple_lines

/PATTERN1\\_.\\{-}PATTERN2

परमाणु \\_.अंत-पंक्ति सहित किसी भी वर्ण को पाता है। मल्टी \\{-}मैच जितना संभव हो उतना कम।


1
यह सवाल का जवाब नहीं देता है, हालांकि, चूंकि यह कम है, विम नहीं। यह एक टिप्पणी होनी चाहिए।
शशोअल्म

1
@sashoalm यह अभी भी जवाब देने का एक प्रयास है, इसलिए मैं इसे नीचे वोट करूंगा, और आगे बढ़ूंगा। समाधान की खोज करने वाले लोग विशेष रूप से एक उपकरण का उपयोग करने के लिए बाध्य नहीं हो सकते हैं।
slhck

2

lessedरेगेक्स सिंटैक्स का उपयोग कर रहा है और यह दुर्भाग्य से बहुस्तरीय मिलान का समर्थन नहीं करता है।

https://www.gnu.org/software/gnulib/manual/html_node/ed-regular-expression-syntax.html#ed-regular-expression-syntax

मैं उम्मीद कर रहा था कि जैसा भी हो, या कम से कम यह पता करें कि क्या इस वाक्यविन्यास बिट का उपयोग किया गया था less:

RE_DOT_NEWLINE यदि यह बिट सेट है, तो मैच-कोई भी वर्ण ऑपरेटर एक नई रेखा से मेल खाता है; यदि यह बिट सेट नहीं है, तो यह नहीं है।

इसलिए मैं .+न्यूलाइन से मिलान करने के लिए पैटर्न का उपयोग कर सकता हूं । लेकिन नहीं, यह नहीं है।

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