मैं grep और सॉर्ट कमांड का उपयोग कैसे करूँ?


15

मैं फ़ाइल में पाई गई सभी टीसीपी सेवाओं की क्रमबद्ध सूची बनाना चाहता हूं /etc/services, कमांड के आउटपुट को कमांड grep tcp /etc/servicesमें पाइप करता हूं sort, फिर इस पाइप के आउटपुट को फाइल में रीडायरेक्ट करता हूं ~/pipelab.txt

मुझे एक त्रुटि संदेश मिलता है कि मेरा आउटपुट गलत है, और मुझे नहीं पता कि क्यों।

यही मैंने आखिरी कोशिश की है:

grep tcp /etc/services > ~/pipelab.txt | sort

जवाबों:


11

> ~/pipelab.txtस्पष्ट रूप से पाइपलाइन ऑपरेटर के एक ही तरफ कमांड का है |। यानी आप grepआउटपुट को फ़ाइल में पाइप करने के बजाय उसे रीडायरेक्ट करते हैं sort:

grep tcp /etc/services | sort > ~/pipelab.txt

21

आप grepकिसी फ़ाइल के आउटपुट को पुनर्निर्देशित करने की कोशिश कर रहे हैं और उसे पाइप कर सकते हैं sort। आप ऐसा नहीं कर सकते, कम से कम ऐसा नहीं है।

इसके बजाय, आप वास्तव में इसे क्रमबद्ध करना चाहते हैं:

grep tcp /etc/services | sort

और फिर आप किसी फ़ाइल के लिए सॉर्ट किए गए आउटपुट (जैसे, क्या सॉर्ट से बाहर आ रहा है) को रीडायरेक्ट करना चाहते हैं , इसलिए आप इसके बाद रीडायरेक्ट करते हैं:

grep tcp /etc/services | sort > ~/pipelab.txt

जहां कमांड का आउटपुट जाता है वहां बदलकर पाइप और रीडायरेक्ट दोनों काम करते हैं। आपके पास उनमें से दो आउटपुट से लड़ रहे थे grep(और अंततः, पुनर्निर्देशित जीत गया, और आपकी फ़ाइल में अनसोल्ड आउटपुट लिखा था)।


बहुत-बहुत धन्यवाद, मैंने सोचा कि जब तक मैं इस तरह की कमांड डालूंगा, तब भी यह काम करेगा।
user72510

1
@ user72510 पाइपलाइनों को क्रम से संसाधित किया जाता है, बाएं से दाएं। यह वास्तव में उपयोगी है, उदाहरण के लिए यदि आप सॉर्ट किए गए आउटपुट की पहली पांच लाइनें चाहते हैं, तो आप कर सकते हैं grep tcp /etc/services | sort | head -n 5। इसका महत्त्वपूर्ण sortहोना चाहिए head, या आपके द्वारा इच्छित लाइनें नहीं मिलेंगी।
व्युत्पन्न

यह समझाने के लिए धन्यवाद। मैं क्लास ऑनलाइन ले रहा हूं इसलिए खुद को पढ़ा रहा हूं। यह जोड़ने के लिए कि मैं 40 साल का हूं, यह धीमी गति से सीख रहा है।
user72510
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.