2010-07-14 15 views
61

मैं पूरी तरह से शाब्दिक तारों की खोज के लिए एक grep-type टूल के बाद हूं। मैं एक अलग फ़ाइल फ़ाइल में एक पंक्ति के हिस्से के रूप में, लॉग फ़ाइल की एक पंक्ति की घटना की तलाश में हूं। खोज टेक्स्ट में सभी प्रकार के रेगेक्स विशेष वर्ण हो सकते हैं, उदाहरण के लिए, []().*^$-\शाब्दिक तारों के लिए Grep

क्या यूनिक्स खोज उपयोगिता है जो रेगेक्स का उपयोग नहीं करेगी, लेकिन केवल स्ट्रिंग की शाब्दिक घटनाओं की खोज करेगी?

+0

आश्चर्य क्यों सवाल _ "क्या मैं शाब्दिक तारों के लिए 'grep' खोज कर सकता हूं?" _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ पता है;; ' – ADTC

उत्तर

88

आप -F विकल्प के साथ, इसके लिए grep का उपयोग कर सकते हैं।

-F, --fixed-strings  PATTERN is a set of newline-separated fixed strings 
+0

* "न्यूलाइन से अलग फिक्स्ड स्ट्रिंग्स" * मैं इसे टर्मिनल प्रॉम्प्ट पर कैसे कर सकता हूं? मुझे पता है कि मैं एक पैटर्न फ़ाइल बना सकता हूं, लेकिन फाइल के बिना, क्या प्रॉम्प्ट पर करना संभव है? एंटर दबाकर स्पष्ट रूप से कमांड निष्पादित करता है। – ADTC

+3

* मैं अपने प्रश्न का उत्तर दूंगा। :) * आपको '-e' विकल्प की दोहराव का उपयोग करके कई निश्चित स्ट्रिंग प्रदान करने की आवश्यकता है। इस तरह: 'grep -F -e "fixed1" -e "fixed2" -e "fixed3" -e "fixed4" '। कोई नई लाइन की आवश्यकता नहीं है;) – ADTC

+1

सोलालिस पर उपलब्ध नहीं है। इसके बजाय 'fgrep' का उपयोग किया जाता है। – majkinetor

2

-F से grep पास करें।

7

है कि या तो fgrep या grep -F जो नियमित अभिव्यक्ति से काम नहीं चलेगा। fgrepgrep -F के समान है, लेकिन मैं,, तर्क के बारे में चिंता आंतरिक रूप से आलसी जा रहा है :-)

grep -> grep 
fgrep -> grep -F (fixed) 
egrep -> grep -E (extended) 
rgrep -> grep -r (recursive, on platforms that support it). 
+0

जीएनयू grep के लिए, fgrep को grep के लिए सिम्लिंक के रूप में प्रदान किया जाता है जो इसे लेता है -F – Daenyth

+3

'egrep' और' fgrep 'POSIX मानक द्वारा निर्दिष्ट नहीं हैं; 'grep -F' और 'grep -E' [हैं] (http://pubs.opengroup.org/onlinepubs/9699919799/utilities/grep.html) –

3

आप भी awk उपयोग कर सकते हैं की जरूरत नहीं करने के लिए पसंद के रूप में यह तय स्ट्रिंग, साथ ही प्रोग्रामिंग को खोजने के लिए की क्षमता है क्षमताओं, जैसे ही

awk '{for(i=1;i<=NF;i++) if($i == "mystring") {print "do data manipulation here"} }' file 
0
cat list.txt 
one:hello:world 
two:2:nothello 

three:3:kudos 

grep --color=always -F"hello 

three" list.txt 

उत्पादन

one:hello:world 
three:3:kudos 
+1

यह मौजूदा स्वीकृत उत्तर में कुछ भी नहीं जोड़ता है। –

+0

मैं सहमत नहीं हूं। यह एक उपयोगी उदाहरण है कि यह कैसे काम करता है। – timwaagh

संबंधित मुद्दे