Grep में बाइनरी फ़ाइल मिलान परिणामों को कैसे दबाएं [बंद]


215

grepलिनक्स में उपयोग करते समय , परिणाम में अक्सर "बाइनरी फ़ाइल XXX मैचों" का एक बहुत कुछ होता है, जिसके बारे में मुझे परवाह नहीं है। परिणामों के इस हिस्से को कैसे दबाएं, या grep में बाइनरी फ़ाइलों को कैसे बाहर करें?


12
grep -I .........

1
@skwsp लेकिन -l के साथ, परिणामों में मिलान की गई रेखा नहीं होती है, केवल मिलान किए गए फ़ाइल नाम के साथ।
रैंडीटेक

लाइनों के लिए एक विकल्प है: grep -I -n -H

6
यह ऑफ टॉपिक है? वाह
CoffeeTableEspresso

जवाबों:


302

तीन विकल्प हैं, जिनका आप उपयोग कर सकते हैं। -Igrep में बाइनरी फ़ाइलों को बाहर करना है। अन्य लाइन नंबर और फ़ाइल नाम के लिए हैं।

grep -I -n -H 


-I -- process a binary file as if it did not contain matching data; 
-n -- prefix each line of output with the 1-based line number within its input file
-H -- print the file name for each match

तो यह grep चलाने का एक तरीका हो सकता है:

grep -InH your-word *

यह काम। Thx @skwllsp
RandyTek

7
मैं सभी फ़ोल्डर्स के अंदर देखने के लिए पुनरावर्ती के लिए खड़ा है, -Irnजहां का उपयोग करेंगे rHयहाँ
अत्यधिक

@vladkras, "H यहाँ अत्यधिक है" - आपका मतलब निरर्थक है, अर्थात यह पहले से ही डिफ़ॉल्ट है?
cp.engr

यह स्पष्ट करने के लिए धन्यवाद कि आपके उत्तर में छोटे विकल्पों का क्या अर्थ है। एसओ पर बहुत सारे टोने लाइनक्स कमांड उत्तर हैं जो कोई स्पष्टीकरण नहीं देते हैं, जो मुझे कष्टप्रद लगता है।
जराहली

1
@AaronFranke: -nध्वज ग्रीप को उन फ़ाइलों की लाइन संख्या की रिपोर्ट करने के लिए कहता है, जिनमें यह मैच मिला। "1-आधारित" का मतलब है कि लाइन की गिनती शून्य के बजाय एक से शुरू होती है, जैसा कि अक्सर प्रोग्रामिंग में किया जाता है। इसलिए, यदि आपकी फ़ाइल की पहली लाइन नाम example.txtहै Hello, world, दूसरी लाइन है Hello cat, और तीसरी लाइन है cats are cool, तो "बिल्ली" के माध्यम से खोज grep -n cat example.txtकरना, आप प्राप्त करेंगे example.txt:2: Hello catऔर example.txt:3: cats are cool
jvriesem

11

यह एक पुराना प्रश्न है और इसका उत्तर दिया जा चुका है, लेकिन मैंने सोचा कि मैं --binary-files = पाठ विकल्प यहां किसी के लिए भी रखूंगा जो इसका उपयोग करना चाहता है। -I विकल्प बाइनरी फाइल को नजरअंदाज करता है लेकिन यदि आप चाहते हैं कि बाइनरी फाइल टेक्स्ट के रूप में बाइनरी फाइल को ट्रीट करे तो --binary-files = टेक्स्ट जैसे:

bash$ grep -i reset mediaLog*
Binary file mediaLog_dc1.txt matches
bash$ grep --binary-files=text -i reset mediaLog*
mediaLog_dc1.txt:2016-06-29 15:46:02,470 - Media [uploadChunk  ,315] - ERROR - ('Connection aborted.', error(104, 'Connection reset by peer'))
mediaLog_dc1.txt:ConnectionError: ('Connection aborted.', error(104, 'Connection reset by peer'))
bash$
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.