मैं किसी फ़ाइल ubuntu 14.4
में grep
कमांड के आउटपुट को रीडायरेक्ट करने का प्रयास करता हूं, लेकिन मुझे यह त्रुटि मिलती रहती है:
grep: input file 'X' is also the output
मैंने इस मुद्दे को खोजा है और अभी पता चला है कि यह एक बग था ubuntu 12.4
और इसमें कोई वर्णन नहीं है, क्या कोई मुझे इस समस्या का पता लगाने में मदद कर सकता है?
मैं निम्नलिखित कमांड चलाता हूं:
grep -E -r -o -n r"%}(.*){%" > myfile
मैं अपनी आज्ञा जोड़ता हूँ! संकेत के लिए धन्यवाद, लेकिन जब मैं किसी अन्य पथ में एक फ़ाइल का उपयोग करने की कोशिश करता है, तो यह भविष्यवाणी नहीं करता है और मैं ऐसा नहीं कर सकता!
—
कासरमवद
उदाहरण के लिए ../fi इसे प्राप्त करें
—
कास्रामव्ड
bash: ../f.txt: Permission denied
पूर्ण कमांड दिखाएं, आपकी इनपुट फ़ाइल क्या है, या आप पाइप का उपयोग कर रहे हैं?
—
जिमीज
अब मुझे समझ में आया कि आप वास्तव में पूरी तरह से पूरी तरह से डायरेक्टरी स्ट्रक्चर को तैयार कर रहे हैं और रिजल्ट को उस फाइल में जोड़ना चाहते हैं जो इस स्ट्रक्चर में पहले से मौजूद है। समस्या यह है कि शेल (बैश, zsh, जो भी हो) पहले पुनर्निर्देश करता है और उसके बाद ही वापस कमांड (इस उदाहरण में grep) जाता है। इसका मतलब है कि
—
जिमीज
grep
कमांड में grep pattern file > file
पहले से ही खाली फ़ाइल दिखाई देती है, इसलिए इनपुट के रूप में कुछ भी नहीं है। हालाँकि यदि आप >>
इसके बजाय उपयोग करते हैं >
तो फ़ाइल खाली नहीं है, लेकिन grep किसी भी तरह से त्रुटि को फेंक देता है क्योंकि यह एक ही पंक्ति (पैटर्न) को बार-बार पुन: संसाधित करने का कारण बन सकता है।
grep pattern file > file
तो यह काम नहीं करता है। आप grep के इनपुट और आउटपुट के समान फ़ाइल का उपयोग नहीं कर सकते।