कुछ फ़ाइलों पर उपयोग किए जाने पर grep बस विफल हो जाता है


5

मैं इसे ठीक से काम करने के लिए पिछले 30 मिनट से कोशिश कर रहा हूं। grepउपयोग करने के लिए बिल्कुल मुश्किल बात नहीं है, इसलिए मैं कुछ हद तक परेशान हूं कि यह काम क्यों नहीं करेगा।

जिन फाइलों पर मैं प्रयोग करने की कोशिश कर रहा हूं, grepवे साधारण XHTML लॉग फाइलें हैं। उनका नाम प्रारूप नाम@domain.com.html में है, हालांकि मुझे नहीं लगता कि यह मायने नहीं रखता है, और अंदर सरल XHTML है।

मैंने एक ऐसी लॉग फ़ाइल की प्रतिलिपि बनाई है testfileताकि आप कुछ कमांड का आउटपुट देख सकें और यह मेरे लिए चौंकाने वाला है:

[~/.chatlogs_windows/dec] > whoami
reid
[~/.chatlogs_windows/dec] > type grep
grep is /bin/grep
[~/.chatlogs_windows/dec] > uname -a
Linux reid-pc 2.6.35-22-generic #33-Ubuntu SMP Sun Sep 19 20:32:27 UTC 2010 x86_64 GNU/Linux
[~/.chatlogs_windows/dec] > cat /etc/issue
Linux Mint 10 Julia
[~/.chatlogs_windows/dec] > ls -lh testfile
-rw-r--r-- 1 reid reid  63K 2011-01-10 12:45 testfile
[~/.chatlogs_windows/dec] > tail -3 testfile 
</body>
</html>
[~/.chatlogs_windows/dec] > file testfile
testfile: XML document text
[~/.chatlogs_windows/dec] > grep html testfile 
[~/.chatlogs_windows/dec] > grep body testfile 
[~/.chatlogs_windows/dec] > grep "</html>" testfile 
[~/.chatlogs_windows/dec] > grep "</body>" testfile
[~/.chatlogs_windows/dec] > cat testfile | grep html
[~/.chatlogs_windows/dec] > cat testfile | wc -l
231
[~/.chatlogs_windows/dec] > cat testfile | tail -3
</body>
</html>
[~/.chatlogs_windows/dec] > chmod a+rw testfile && ls -lh | grep testfile
-rw-rw-rw- 1 reid reid  63K 2011-01-10 12:45 testfile
[~/.chatlogs_windows/dec] > grep html testfile

यही मैं करने का प्रयास कर रहा हूं। मैं तो बस का उपयोग करना चाहते grep -ri query .में ~/.chatlogs_windows, जो आम तौर पर मेरे लिए पूरी तरह से काम करता है ... लेकिन किसी कारण से, यह पूरी तरह से इन फ़ाइलों के माध्यम से जा में विफल रहता है।

अगर यह मायने रखता है, तो मैंने इन फ़ाइलों को अपने विंडोज 7 विभाजन से कॉपी किया। लेकिन मैंने उन्हें चुन लिया और खुद को सभी उपयुक्त अनुमति दे दी, और अन्य कार्यक्रमों (जैसे cat) उन्हें ठीक पढ़ने के लिए लगता है। मैंने testfile_unix के लिए testfile की प्रतिलिपि भी बनाई और लाइन एंडिंग्स को रूपांतरित किया और यह कोशिश की, लेकिन यह या तो काम नहीं किया।

मैं zsh का उपयोग कर रहा हूं, लेकिन मैंने इसे बैश पर आजमाया और यह विफल भी रहा। इसके अलावा, grep सामान्य रूप से काम करता है: मैंने इसे अपने दस्तावेज़ फ़ोल्डर पर आज़माया और यह त्रुटिपूर्ण काम किया।

अगर आपको कोई और जानकारी चाहिए, तो मुझे बताएं मैं चारों ओर गुगली की कोशिश की, लेकिन मैं grep के लिए कोई कारण नहीं बस काम करने के लिए नहीं मिला। अग्रिम में धन्यवाद।


बैश में, आप उन विफल grepकॉलों में से एक को निष्पादित करने के बाद , बाहर निकलने की स्थिति दिखाएं: echo $? (एक तरफ: ls -Alh | grep testfile अधिक आसानी से लिखा / टाइप किया गया है ls -lh testfile)
डग हैरिस

यह मेरे लिए समझ में नहीं आता है, लेकिन सिर्फ यह सुनिश्चित करने के लिए: क्या आपने कोशिश की थी: कैट टेस्टफाइल | grep "html"?
यासोसर

यह परिणाम के रूप में "1" वापस देता है। मैंने उसके बारे में सोचा भी नहीं था। लेकिन grep के मैन पेज के अनुसार, जब तक मैं इसे गलत नहीं समझ रहा हूँ, 1 परिणाम है जब लाइनें नहीं मिली हैं (कोई मिलान नहीं)।
रीड

@ anand.arumug: हां, मैंने कोशिश की है कि और सभी प्रकार की विविधताएं। चाहे मैं कुछ भी करूं, कुछ भी कभी वापस नहीं दिया जाता।
रीड

एक नई फ़ाइल (टच ~ / test.txt) बनाने की कोशिश करें और टेस्टफाइल की सामग्री को कॉपी / पेस्ट करें। और टटोलने की कोशिश करो। देखते हैं क्या होता है।
यासोसर

जवाबों:


7

Grep टूल UTF-16 फ़ाइल एन्कोडिंग को नहीं पहचानता है।


2
प्रतिभाशाली! किसी और के लिए, जिनके पास भविष्य में यह समस्या हो सकती है, मैंने iconv -f UTF-16 -t UTF-8 testfile > testfile_encइसे परिवर्तित करने के लिए कमांड का उपयोग किया और वहां से परीक्षण किया। यह अच्छा होगा अगर grep आपको इसके बारे में सूचित करेगा, हालांकि, चुपचाप विफल होने के बजाय।
रीड

महान! कुछ दिलचस्प सीखा :) @Reid और @RedGrittyBrick के लिए धन्यवाद।
यासोसर

Grep और Windows फ़ाइलों ने मेरी आत्मा का एक छोटा सा हिस्सा चुरा लिया है। धन्यवाद @Reid
विल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.