जवाबों:
मैं इसे बैकस्लैश के साथ करने में सक्षम था:
25 % grep \< xmospos.c
#include <stdio.h>
#include <stdlib.h>
#include <getopt.h>
#include <X11/Xlib.h>
कम-से-कम उद्धृत किया गया, और एक उद्धृत, दोनों ने नासमझ जवाबों की तुलना में कम वापस ले लिया।
grep -oP '(?< )(.*)$'
उदाहरण के लिए एकल उद्धरण के साथ काम नहीं करता है। पहले तो कोशिश की।
(?<! )(.*)$
या (?<= )(.*)$
?
दो सरल नियम:
\C
अगले चरित्र से बच जाता है, चाहे वह कोई भी हो, एक न्यूलाइन के अलावा।'text'
उनके बीच किसी भी वर्ण से बचते हैं, जिसमें एक बैकस्लैश भी शामिल है, लेकिन एक भी उद्धरण शामिल नहीं है (क्योंकि यह उद्धरण पाठ के अंत को चिह्नित करता है)।इस प्रकार:
grep -P '<html>' myfile
grep -P \<html\> myfile
grep -P '(?<!<)html' myfile
grep -P \(\?\<\!\<\) myfile
यदि आपको एक तर्क पारित करने की आवश्यकता है जिसमें एकल उद्धरण शामिल हैं, तो आप '\''
एकल उद्धरण के अंदर एक एकल उद्धरण "बच" का उपयोग कर सकते हैं । तकनीकी रूप से, यह क्या करता है पहला शाब्दिक पाठ समाप्त होता है, फिर एक '
ही शब्द में एक शाब्दिक शब्द, फिर एक ही शब्द में अधिक शाब्दिक पाठ।
grep '^D'\''oh!' myfile
शेष उद्धृत नियम (संक्षेप में):
!"#$&'()*;<>?[\]^`{|}~
(दूसरे शब्दों में, निम्नलिखित वर्ण सुरक्षित हैं: अक्षर, अंक %+,-./:=@_
और गैर-एएससीआईआई अक्षर)।"$\`
और (इतिहास सक्षम के साथ गोले में) !
। दोहरे उद्धरण चिह्नों के बीच एक बैकस्लैश स्ट्रिंग में दिखाई देगा जब तक कि यह गैर-शाब्दिक वर्णों में से एक से पहले न हो।ये नियम बैश और अन्य बॉर्न-शैली के गोले (जैसे राख और क्श) के लिए हैं। वे zsh पर भी लागू होते हैं (सिवाय इसके कि व्हाट्सएप को =
उद्धृत करने की आवश्यकता हो सकती है)। Csh / tsh और मछली में नियम अलग-अलग हैं।