कैसे पाठ के साथ सभी लाइनों के लिए एक खोज उलटा खोज करने के लिए


18

grep के साथ, मैं एक grep -v "मेरी खोज" कर सकता हूँ, "मेरी खोज" से सभी पंक्तियों को प्राप्त करने के लिए

sed साथ मैं कर सकते हैं sed '/ baz /! s / foo / बार / जी' बाहर baz साथ तर्ज पर पाठ की जगह खोजने के लिए

क्या वही काम करने का कोई तरीका है। और क्या यह संभव है लेकिन "s ///" सिंटैक्स के साथ। सिर्फ "/" खोज वाक्यविन्यास का उपयोग करना।

जवाबों:


29
:g/pattern/

मैच सभी लाइनों पैटर्न पाया गया था।

:v/pattern/

इसके विपरीत करता है। :h globalअधिक जानकारी के लिए देखें।

आप इसे इस तरह से उपयोग कर सकते हैं:

:v/pattern/norm Ipattern not found - <CR>

"प्रतिरूप नहीं मिला -" प्रति पंक्ति में "पैटर्न" या नहीं है

:v/pattern/s/nrettap/pattern

"पैटर्न" के साथ "पैटर्न" के साथ "पैटर्न" को बदलने के लिए "पैटर्न" नहीं है।

उदाहरणों से वंचित, हाँ।


मैं "nrettap" पर प्यार करता हूँ।
अंकलजीव

5

उदाहरण के लिए, फू न होने वाली रेखाओं की खोज करने के लिए:

/^\(\(.*foo.*\)\@!.\)*$

स्रोत: http://vim.wikia.com/wiki/Search_for_lines_not_contain_pattern_and_other_helpful_searches


1
मुझे उस @ @ निर्देश के बारे में नहीं पता था जो आपको खोज में पिछले परमाणु का संदर्भ देता है। बहुत उपयोगी।
नालारो

भले ही सही, यह वास्तव में महंगा है।
बेनोइट

1

का उपयोग कर: v कमांड एडिट एक पैटर्न से मेल खाते लाइनों को खोजने के लिए पारंपरिक दृष्टिकोण का उपयोग कर रहा है : v कमांड :

:v/Warning/p

एक बड़ी लॉग फ़ाइल के साथ काम करते समय एक साफ-सुथरी चाल, जहां आप अपनी वास्तविक खोज शुरू करने से पहले जितनी संभव हो उतनी अप्रासंगिक लाइनों को फ़िल्टर करना चाहते हैं, फ़ाइल को अस्थायी नाम के तहत सहेजना है और वहां सभी गैर-मिलान लाइनों को हटाना है:

:sav junk.log
:v/warning/d

अब आप अपनी मूल फ़ाइल का एक क्लोन संपादित कर रहे हैं जिसमें सभी लाइनें "चेतावनी" से मेल नहीं खाती हैं और आप इसे संपादित कर सकते हैं।

Ref: https://vim.fandom.com/wiki/Search_for_lines_not_contain_pattern_and_other_helpful_searches

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