Grep -v "grep" का क्या अर्थ और है?


17

मैं सोच रहा था कि grep -v "grep"इसका क्या मतलब है और क्या है?


8
आप man grepकमांड के लिए संदर्भ मैनुअल पेज को पढ़ सकते हैं, या कुछ आदेशों पर अधिक जानकारी के लिए (इंक। Grep) आप कर सकते हैं info grep.... यानी। आपके सिस्टम में प्रलेखन है जो अक्सर बहुत काम आता है।
ग्वारसी

12
grep -v "grep"अक्सर प्रक्रियाओं को सूचीबद्ध करते समय grep को फ़िल्टर करने के लिए उपयोग किया जाता है और जिसमें आमतौर पर 3 पाइपलाइन शामिल होती हैं, हालांकि निश्चित रूप से बेहतर तरीके हैं जैसे pgrepकि बहुत कम "प्लंबिंग" की अनुमति देते हैं। देखें unix.stackexchange.com/q/74185/85039
Sergiy Kolodyazhnyy

13
उसने ऐसा किया। मैं अपने रूटकिट को बुला रहा हूं grep
जोशुआ

आम तौर पर इस तरह के रूप में एक गैर सुरक्षा से संबंधित संदर्भ में प्रयोग किया ps aux | grep fubar | grep -v grepजहां fubarकुछ मैं विकासशील कर रहा हूँ, कि जवाब बंद कर दिया गया है, और जिसका आईडी मैं तो मैं इसे मार सकते हैं खोजना चाहते हैं। मान लें कि उनमें से दो killallअनुचित हैं।
nigel222

जवाबों:


69

grep -v "grep"लाइन द्वारा इनपुट लाइन लेता है, और केवल उन लाइनों को आउटपुट grepकरता है जिसमें दिखाई नहीं देता है। बिना -v, यह उत्पादन केवल लाइनों, जिसमें होता grep है दिखाई देते हैं। man grepविवरण के लिए देखें।

जहाँ तक grepउपयोगिता का संबंध है, यह महत्वहीन है कि grepएक तर्क के रूप में इसे पारित करने वाला पैटर्न इसके नाम के समान है। लेकिन ज्यादातर मामलों में जहां grep -v grepवास्तव में प्रकट होता है, यह कोई संयोग नहीं है।

grep -v grep(या grep -v 'grep'या grep -v "grep") अक्सर एक पाइप के दाईं ओर दिखाई देता है जिसका बाईं ओर एक psकमांड है। यह संभावना है कि आपने इसे कहां देखा है। उदाहरण के लिए, मैं उन प्रोग्रामों को खोज सकता हूँ जिनके नाम, रास्ते या कमांड-लाइन तर्क बताते हैं कि वे Xfce से संबंधित हैं:

ek@Io:~$ ps x | grep xfce
 2955 ?        Ssl    0:10 xfce4-power-manager
 2958 ?        S      0:00 /usr/lib/x86_64-linux-gnu/xfce4/xfconf/xfconfd
31901 pts/1    S+     0:00 grep --color=auto xfce

मेरा grepआदेश आउटपुट में दिखाया गया था, लेकिन यह वह नहीं है जिसकी मुझे तलाश है। मैं उन प्रक्रियाओं की जानकारी खोज रहा हूं जो पहले से चल रही थीं जब मैंने जांच की कि क्या चल रहा था, न कि वह प्रक्रिया जो केवल इसलिए चल रही है मेरे प्रयास के क्या चल रहा है।

इस विकर्षण को दूर करने का एक सामान्य तरीका है कि इसमें एक और पाइप जोड़ा जाए grep -v grep:

ek@Io:~$ ps x | grep xfce | grep -v grep
 2955 ?        Ssl    0:10 xfce4-power-manager
 2958 ?        S      0:00 /usr/lib/x86_64-linux-gnu/xfce4/xfconf/xfconfd

grep-Fइसके बिना एक निश्चित स्ट्रिंग के बजाय एक नियमित अभिव्यक्ति के रूप में अपने पैटर्न का व्यवहार करता है । तो एक और दृष्टिकोण एक नियमित अभिव्यक्ति लिखने के लिए है जो बिल्कुल मेल खाता है लेकिन अलग तरह से लिखा गया है। उदाहरण के लिए:xfce

ek@Io:~$ ps x | grep '[x]fce'
 2955 ?        Ssl    0:10 xfce4-power-manager
 2958 ?        S      0:00 /usr/lib/x86_64-linux-gnu/xfce4/xfconf/xfconfd

यह काम करता है क्योंकि [x]एक वर्ण वर्ग है जो अक्षर से बिल्कुल मेल खाता है x


उन लोकप्रिय तरीकों में से एक कमी यह है कि वे उन पंक्तियों को फ़िल्टर कर देंगे, जिनमें सम्‍मिलित grepनहीं हैं , जबकि वे ऐसी grepआज्ञा नहीं हैं जो आप स्वयं चलाते हैं। वे भी grepकमांड नहीं हो सकते हैं - सिर्फ कमांड जिनके नाम, पथ या कमांड-लाइन तर्क हैं grep । इसलिए, जैसा कि सर्जी कोलोडियाज़नी ने बताया है , अक्सर उन तरीकों में से न तो (और न ही आउटपुट को शामिल करने वाला कोई अन्य तरीका ps) वास्तव में आदर्श है और जैसा कि निक हार्टले ने उल्लेख किया है , अन्य तरीके अक्सर उपयोग करते हैं pgrep। उदाहरण के लिए:

ek@Io:~$ pgrep -af xfce
2955 xfce4-power-manager
2958 /usr/lib/x86_64-linux-gnu/xfce4/xfconf/xfconfd
  • -a पूरी कमांड लाइन दिखाता है। केवल प्रक्रिया आईडी नंबर दिखाने के लिए इसे छोड़ दें।
  • -f पूर्ण कमांड लाइन में खोज करता है। इसे केवल नाम खोजने के लिए छोड़ दें।

10
यह pgrepएक और विकल्प के लिए भी ध्यान देने योग्य हो सकता हैps | grep
निधि मोनिका का मुकदमा

8

grep --helpहमें बताता है कि -vझंडा क्या करता है:

-v, --invert-match        select non-matching lines

आप -vमिलान को प्रिंट करने के लिए ध्वज का उपयोग कर सकते हैं ; यही है, यह केवल उन पंक्तियों से मेल खाता है जिनमें दिए गए शब्द नहीं हैं। उदाहरण के लिए सभी लाइन को प्रिंट करें जिसमें शब्द बार नहीं है:

$ grep -v bar /path/to/file

(और पढ़ें ... )

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