GNU grep के -X विकल्प का वास्तविक उद्देश्य क्या है और यह अनिर्दिष्ट क्यों है?


58

इस प्रश्न को पढ़कर , मुझे पता चला है कि GNU grepमें एक -Xविकल्प है जो एक तर्क की अपेक्षा करता है। अजीब तरह से, यह न तो आदमी पृष्ठ में और न ही जानकारी पृष्ठ में उल्लिखित है।

स्रोत कोड को देखते हुए, आउटपुट के मध्य में--help वह टिप्पणी है :

/* -X is deliberately undocumented.  */

आगे देख रहे हैं, ऐसा लगता है कि -X matcherविकल्प regexp के लिए इस्तेमाल इंजन सेट , matcherकिया जा रहा है में से एक grep , egrep, fgrep, awk, gawk, posixawkऔर perl(संस्करण 2.25 के रूप में)।

उन मूल्यों से कुछ सख्ती से मौजूदा विकल्पों के समान (अर्थात् हैं grep -G, grep -E, grep -Fऔर grep -P)। दूसरी ओर, तीन awkवेरिएंट के पास कोई संगत विकल्प नहीं है।

क्या किसी को पता है कि इस विकल्प का वास्तविक उद्देश्य क्या है, विशेष रूप से awkरेगेक्स इंजन में से एक के साथ ? क्या कोई मुझे बता सकता है कि यह जानबूझकर प्रलेखित क्यों नहीं है?


6
दिलचस्प खोज! मुझे संदेह है कि इसे अनिर्दिष्ट छोड़ने का उद्देश्य इतना है कि वे इसे बिना किसी सूचना के भविष्य के संस्करणों से हटाने के लिए स्वतंत्र महसूस कर सकते हैं। GNU undocumented विकल्प का एक और उदाहरण -EGNU sed के लिए है जो BSD sed के साथ अनुकूलता प्रदान करता है। (मुझे उम्मीद -Eहै कि यदि POSIX औपचारिक रूप से इसे अपनाता है और यदि ऐसा नहीं करता है तो उसे हटा दिया जाएगा।)
जॉन 1024

3
मैं @ जॉन 1024 से सहमत हूं, हालांकि एकमात्र व्यक्ति जो निश्चित रूप से जवाब दे सकता है, वह है स्टीफन कासल, जिसने 7 फरवरी 2005 को प्रलेखित किया, जो -Xजानबूझकर अविवादित है। (यदि आप उनसे पूछना चाहते हैं तो उनका ईमेल पता चैंज में है।)
वाइल्डकार्ड

3
मैंने इसे गिट इतिहास के माध्यम से नीचे ट्रैक करने की कोशिश की, लेकिन यह पता चला है कि इसे grep की पहली गिट कमिट से पहले जोड़ा गया था (यह 06b9f7e683e7650804cadd9a4c5cfbff6c89625 पर Tue Nov 3 21:38:52 1998 से मौजूद था)। संभवत: उन्होंने पिछले VCS को git में आयात किया, जैसा कि स्पष्ट रूप से git से पूर्व में है।
derobert

1
इसके अलावा grep 2.0 में जो ftp.gnu.org/gnu/grep/?C=M=O=A
derobert

3
... लेकिन 1.6 में नहीं जो मुझे oldlinux.org/Linux.old/distributions/TAMU/TAMU-1.0D/src/tar/… (नोट पर मिला) : (मैंने उस कोड की प्रामाणिकता को सत्यापित करने का कोई प्रयास नहीं किया है) इसे कहीं 1.6 (1993) के बीच (1992) और 2.0 के लिए तिथि करने के लिए प्रकट होता है
derobert

जवाबों:


67

इसका उद्देश्य grepएक या दूसरे रूप में GNU में लागू किए गए विभिन्न मिलानों तक पहुँच प्रदान करना है, विशेष रूप से AWK मैचर्स जो अन्यथा उपलब्ध नहीं हैं, शायद परीक्षण के प्रयोजनों के लिए ( बग 16481 देखें जिसमें gawkऔर मैचर्स को जोड़ने की चर्चा है posixawk)।

हालांकि यह वर्तमान में छोटी गाड़ी है, यही कारण है कि इसे अविभाजित होने के रूप में प्रलेखित किया गया है :

Thu, 27 जनवरी, 2005 को 04:06:04 अपराह्न -0500 पर, चार्ल्स लेवर्ट ने लिखा:
> '-X' विकल्प, और विशेष रूप से "awk" माचिस
> ("-X awk") के साथ इसका उपयोग अनैच्छिक है।

कृपया इसे अनिर्दिष्ट छोड़ दें।

यह -X awk के अलावा कोई नई कार्यक्षमता प्रदान नहीं करता है।

और जाग regexps का कार्यान्वयन सही नहीं है, मुझे लगता है।

नए GNU रेगेक्स ने AWK स्टाइल सिंटैक्स सेट करने के लिए कुछ साधन जुटाए हैं, हाँ। अभी तक gawk सीधे इसका उपयोग नहीं करता है: यह पहले regex को पार्स करता है।

विशेष रूप से, awk regexps एस्केप अनुक्रम \ NNN को अनुमति देता है, जहां NNN एक अष्टाधारी मूल्य है। तो / \ 040 / गणित स्थान। grep -X awk इस का समर्थन नहीं करता है।

मुझे डर है कि regex.c इन एस्केप अनुक्रमों का समर्थन नहीं करता है।

हमें यह सुनिश्चित करना होगा कि इस सुविधा को दस्तावेज़ (और इस प्रकार समर्थन) करने का निर्णय लेने से पहले regexes awk regexes के साथ पूरी तरह से संगत हैं।

मुझे लगता है कि यह परेशानी के लायक नहीं है।

Stepan

एक अनुवर्ती टिप्पणी को जोड़ने के लिए कहा, और -Xविकल्प पर थोड़ा और पृष्ठभूमि प्रदान की :

मेरा अपना झुकाव पूरी तरह से हटाने-एक्स का सुझाव देना है। मुझे संदेह है कि यह मूल लेखक द्वारा मुख्य रूप से परीक्षण प्रयोजनों के लिए जोड़ा गया था। अगर इसमें रहना है, तो कम से कम इस तरह की टिप्पणी जोड़ें।

/* -X is undocumented on purpose. */

किसी सुलझी हुई समस्या के भविष्य की चर्चा से बचने के लिए।

अर्नोल्ड

जिसके बाद स्टीफन ने कुछ ही समय बाद किया


3
अच्छा पुरातात्विक कार्य, धन्यवाद स्टीफन।
xhienne

2
धन्यवाद :-)। दुर्भाग्य से निशान 2.0 पर रुक जाता है; मुझे लगता है कि यह वह संस्करण है जो पेश किया गया -X, शायद डीएफए के फिर से लिखना के साइड-इफ़ेक्ट के रूप में, लेकिन चेंजगॉग विवरण के लिए कम है।
स्टीफन किट

7
"एक सुलझी हुई समस्या के भविष्य की चर्चा से बचने के लिए।" यह कैसे काम करेगा? ;)
ब्रॉक एडम्स

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