सवाल जीपीआर में काम नहीं कर रहे grep के लिए पाइप


मैं ऐसा कुछ कर रहा हूं जो मैं हमेशा बैश में करता हूं:

set | grep -i path 

और आउटपुट है

Binary file (standard input) matches

क्या गलत है? grep --help काम करता है, और set | more भी काम करता है


4
2018-05-17 13:45


मूल




जवाब:


यह करो:

set > /tmp/zshset

फिर खोलें /tmp/zshset अपने पसंदीदा संपादक में। ढूंढें IFS

इसके लिए डिफ़ॉल्ट मान, प्रति zshparam मैन पेज, डिफ़ॉल्ट स्थान, टैब, न्यूलाइन और एनयूएल है। यह आखिरी व्यक्ति परेशानी पैदा कर रहा है। grep एनयूएल (एएससीआई 0, अक्सर प्रदर्शित होता है ^@) और सोचता है कि यह एक बाइनरी फ़ाइल है।

संभव समाधान:

  • आईएफएस को किसी अन्य मूल्य पर सेट करें। इससे समस्याएं पैदा हो सकती हैं यदि आप कुछ और उम्मीद करते हैं कि एनयूएल एक वैध डेलीमीटर है।
  • उपयोग grep -a जैसा कि केथबी द्वारा सुझाया गया है (या इसके बराबर है --binary-files=text)
  • अपने लिए उपयोग करने के लिए एक नया उपनाम बनाएँ grep -a खुद को टाइपिंग का थोड़ा सा बचाने के लिए
  • अन्य तरीकों से अपने पैथ को देखने के लिए अनुकूलित करें (उदा। env | grep -i path, echo $PATH) - मुझे लगता है कि अन्य समाधान सरल हैं

12
2018-05-17 14:14



स्पष्ट और पूर्ण स्पष्टीकरण। धन्यवाद - मैंने आज कुछ सीखा। - JRobert
मैं दूसरा +1 करूंगा। आपके द्वारा सुझाए गए विकल्पों का उपयोग करने से मुझे और जानकारी मिलती है, इसलिए मैं अब उन लोगों का उपयोग करूंगा। मैं काम करने के लिए आदेश प्राप्त करने के लिए असंबंधित चर के साथ गड़बड़ नहीं करना चाहता। - Dan Rosenstark
बीटीडब्ल्यू, हां, आईएफएस मूल्य टेक्स्टमैट में स्वस्थ नहीं दिख रहा है। मैं इसे अकेला छोड़ दूंगा। - Dan Rosenstark


मुझे यकीन नहीं है कि क्या हो रहा है, लेकिन आप इसे पारित कर सकते हैं -a पाठ के रूप में अपने इनपुट का इलाज करने के लिए इसे मजबूर करने के लिए grep को ध्वजांकित करें, चाहे वह क्या सोचता हो।


2
2018-05-17 13:54



हाँ, मैंने अभी कोशिश की है grep --binary-files=text जो काम करता है, लेकिन मुझे आश्चर्य है कि यह बल्ले से क्यों काम नहीं करता .... धन्यवाद - Dan Rosenstark


यदि आपका कोई और कामकाज है grep लागू नहीं करता है -a करना है:

$ set | cat -v | grep foo

0
2018-04-04 06:18