मैं टर्मिनल आउटपुट से केवल आवश्यक लाइन कैसे प्राप्त करूं?


16

मैं केवल तीसरी पंक्ति df -hआउटपुट कहना चाहता हूं ।

मुझे किस तरह की कमांड का उपयोग करना चाहिए?


16
भविष्य के लिए ध्यान दें: यह प्रश्न बहुत ही बुनियादी है। यह आमतौर पर कुछ प्रयास दिखाने के लिए प्रोत्साहित किया जाता है और पूछने से पहले आपने क्या प्रयास किया है।
सेर्गेई कोलोडियाज़नी

हालांकि यह माना जा सकता है कि किसी प्रकल्पित स्थैतिक प्रारूप वाली फ़ाइल की तीसरी पंक्ति प्राप्त करना, यह आउटपुट के साथ नैदानिक ​​कार्यक्रम की तीसरी पंक्ति से अलग है जो कि सिस्टम की स्थिति पर निर्भर करता है। उदाहरण के लिए, आपकी वर्तमान तीसरी पंक्ति के उड़ने से पहले एक नई ड्राइव / वर्णानुक्रम में बढ़ते हुए। इस प्रकार @ Random832 का उत्तर सबसे अच्छा है।
MarkHu

जवाबों:


31

यह सामग्री की परवाह किए बिना 3 लाइन का उत्पादन करेगा।

df -h | sed -n 3p

सबसे छोटे उत्तर के लिए +1 df -h|sed -n 3p:।
इकोन्स

16

dfआदेश वास्तव में एक तर्क फाइल सिस्टम आप चाहते हैं की पहचान स्वीकार करता है। तो आप उपयोग कर सकते हैं, उदाहरण के लिए, df /homeया df /dev/sda3

यदि आप किसी स्क्रिप्ट के लिए आउटपुट को पार्स करने का इरादा रखते हैं, तो आप df -Pयह गारंटी देना चाहेंगे कि यह कभी भी कई लाइनों में नहीं लिपटे। इसलिए, उदाहरण के लिए, आप उपयोग कर सकते हैं df -Ph /home | tail -n +2(लेकिन यदि आप किसी स्क्रिप्ट के लिए आउटपुट पार्स कर रहे हैं, तो उन स्थानों के साथ फ़ाइल नाम की संभावना से अवगत रहें)


2
बस! उत्पादन पार्स करने के बजाय, आदेश का उपयोग प्रदान करने के लिए बस आप क्या चाहते हैं।
फेडोरक्वि

1
लेकिन ओपी ने कहा कि वह लाइन 3 चाहता था। df /homeहेडर प्रदान करता है। आप उपयोगकर्ता के उद्देश्य की व्याख्या कर रहे हैं। आप शायद सही हो सकते हैं। आप गलत हो सकते हैं, कौन जानता है?
माइक एस

@ माइक एक दर्जन अन्य उत्तर पहले से ही बिना किसी संदर्भ के लाइन 3 को कवर कर रहे हैं। मैंने अतिरिक्त जानकारी प्रदान की ताकि अगर यह उसके लिए उपयोगी हो तो ओपी के पास होगा। और tail -n +2हैडर को हटा देता है।
रैंडम 832

14

आप के संयोजन का उपयोग कर सकते हैं headऔर tail:

df -h | head -3 | tail -1

या

df -h | tail -n +3 | head -1

लेकिन ध्यान दें, dfआउटपुट को dfस्वयं के विकल्पों से फ़िल्टर करने की अनुमति देता है, आपको किसी भी बाहरी कमांड का उपयोग करने से पहले उन पर ध्यान देना चाहिए।

जाँच करें man df


4
+1 उल्लेख करने के लिए कि df विशिष्ट प्रविष्टियों को फ़िल्टर कर सकता है
Sergiy Kolodyazhnyy

2
दरअसल, बाहरी कार्यक्रमों में जाने से पहले डेटा को फ़िल्टर करना लगभग हमेशा बेहतर होता है।
जैच मर्टेस


6

मुझे लगता है कि आप आवश्यक रूप से तीसरी पंक्ति की तलाश में नहीं हैं, लेकिन उस पंक्ति के लिए जो या तो एक विशिष्ट डिस्क (जैसे /dev/sda3) या एक विशिष्ट माउंट बिंदु (जैसे /home) का उल्लेख करती है ।

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

इस के लिए आपका उपकरण है grep

उदाहरण के लिए यदि आप डिवाइस के बारे में लाइन चाहते हैं /dev/sda3, तो आप टाइप करें:

df -h | grep '/dev/sda3'

यदि आप चाहते हैं कि रेखा आपके होम डायरेक्टरी को आरोह बिंदु के रूप में बताए, तो उपयोग करें:

df -h | grep '/home'

3
या ( df -h /dev/sda3या df -h /homeउत्तरार्द्ध काम करता है, भले ही यह एक माउंट बिंदु नहीं है)।
रैंडम 832

6

आप यह भी उपयोग कर सकते हैं perl:

df -h | perl -ne 'print if $.==3' 

$.ताकि आप के साथ वां लाइन प्रिंट कर सकता है, वर्तमान पंक्ति संख्या है perl -ne 'print if $.==N'


1
यही कारण है कि पर्ल मेरे विचार में अभी भी प्रासंगिक है। यह एक संरचित प्रोग्रामिंग भाषा के साथ sed और awk को जोड़ती है (जबकि कई कहेंगे कि वास्तव में बदसूरत है [और मैं सहमत हो सकता हूं]) इन कम एक-लाइनरों के लिए कम से कम सुसंगत और बहुत उपयोगी है। धन्यवाद टेरडॉन। यह लगभग सादगी के उदाहरण के रूप में पर्याप्त है, अगर थोड़ा और अधिक क्रिया।
माइक एस

@ माइक मदद करने के लिए खुश हैं। एक पर्ल हैकर के रूप में, हालांकि, मुझे यह बताना होगा कि पर्ल कोड केवल उतना ही बदसूरत है जितना आप इसे बनाते हैं। अच्छे प्रोग्रामर पर्ल में सुंदर कोड लिख सकते हैं, यह सिर्फ इतना है कि लैंग्वेज आपको मजबूर नहीं करता है और यह आसान नहीं है।
टेराडॉन

2

मेरा पहला विचार एक सिर-पूंछ-निर्माण होगा।

उदाहरण:

df -h | head -3 | tail -1

head -3आउटपुट को तीन लाइनों के बाद रोकने का कारण बनता है और tail -1केवल अंतिम पंक्ति का उत्पादन करेगा।

वैकल्पिक रूप से, यदि आप जानते हैं कि आउटपुट कैसा दिखेगा, तो आप grepएक निश्चित स्ट्रिंग वाली लाइनों को खोजने के लिए भी उपयोग कर सकते हैं ।

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