कैसे पाइप के लिए grep |


14

मैं पाइप वाले पात्र |या वर्ण के लिए पंक्ति के लिए कैसे तैयार हो सकता हूं >:

files content:
|this is test
where is >
this is none

अब मुझे grep कमांड का उपयोग करने की आवश्यकता है

grep -iE "<some expression>" file_name

आउटपुट:

|this is test
where is >

जवाबों:



6

यदि आप GNU grep का उपयोग कर रहे हैं, तो आप इसे या ऑपरेटर ( |) के साथ कर सकते हैं , जिसे बच जाना चाहिए (बैकस्लैश से पहले \)। इसलिए पाइप या अधिक से अधिक चिह्न वाली रेखाओं को खोजने के लिए, उन्हें शाब्दिक रूप से या ऑपरेटर के साथ शामिल करें :

grep '|\|>' infile

आउटपुट:

|this is test
where is >

4
\|एक मानक BREऑपरेटर नहीं है , हालांकि यह GNU के साथ काम करता है grepजो grepलिनक्स कर्नेल के आसपास निर्मित अधिकांश ऑपरेटिंग सिस्टम में पाया जाता है।
स्टीफन चेज़लस

@StephaneChazelas: यह इंगित करने के लिए धन्यवाद, मुझे इसकी जानकारी नहीं थी। मैंने पाठ ठीक किया।
थोर

1
हाँ, प्रत्यावर्तन ऑपरेटर (बीआरईएस से अधिक eres का केवल वास्तविक इसके अलावा, बाकी है +, ?के लिए वाक्यात्मक चीनी जा रहा है) \{1,\}और \{0,1\}। (दूसरी ओर, ईआरईज़ बैक रेफ़रेंस ( \(.\)\1) जो कि केवल एक BRE फीचर हैं)
स्टीफन चेज़लस

1

वांछित पात्रों में से किसी से मेल खाने के लिए ब्रैकेट अभिव्यक्ति का उपयोग करना:

grep "[|>]" infile

आउटपुट:

|this is test
where is >

3
यहां -iया तो कोई जरूरत नहीं -Eहै।
स्टीफन चेजलस

यह सच है, स्वीकार किया।
ज़गरिम्सन २०'१३

0

इसे पूरा करने का सही तरीका -e ध्वज का उपयोग करना है जो POSIX द्वारा निर्दिष्ट है। उदाहरण के लिए:

grep -e '>\||' infile

1
grep -e '>' -e '|' infileकाम भी करता है।
ott--

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