2012-12-12 11 views
8

इस आदेश फ़ाइल की दूसरी पंक्ति प्रदर्शित करता है:यूनिक्स फ़ाइल की दूसरी पंक्ति दिखाने

hello 
mark 
this is the head line 
this is the first line 
this is the second line 
this is the last line 

आदेश ऊपर के रूप में डेटा प्रिंट:

cat myfile | head -2 | tail -1 

मेरे फ़ाइल निम्न डेटा होता है : mark

लेकिन मैं इसे समझने में असमर्थ हूं क्योंकि, हेड -2 का उपयोग पहली दो पंक्तियों को मुद्रित करने के लिए किया जाता है और पूंछ -1 आखिरी पंक्ति प्रिंट करता है लेकिन दूसरी पंक्ति कैसे मुद्रित होती है !! ???

+4

पूंछ केवल सिर से आउटपुट पर काम कर रहा है, और 'पूंछ -1' का मतलब आउटपुट की अंतिम पंक्ति को प्रिंट करना है। इस संदर्भ में (एक पाइपलाइन में), 'पूंछ' नहीं जानता है कि माईफाइल मौजूद है। आपकी पाइपलाइन डिज़ाइन के रूप में काम कर रही है, और जो आप देखते हैं उसे एक फीचर माना जाता है! ;-)। सौभाग्य। – shellter

उत्तर

8

पूंछ हेड आउटपुट की आखिरी पंक्ति प्रदर्शित करता है और हेड आउटपुट की आखिरी पंक्ति फ़ाइल की दूसरी पंक्ति है। सिर के

आउटपुट (पूंछ के लिए इनपुट): पूंछ के

hello 
mark 

आउटपुट:

mark 
10

तुम भी उपयोग करें "sed" कर सकते हैं या "awk" एक विशिष्ट लाइन मुद्रित करने के लिए:

उदाहरण:

sed -n '2p' myfile 

पीएस: "मेरे 'सिर के साथ क्या गलत है' पूंछ 'कमांड - शेलटेल सही है।

+5

ठीक है sed। बड़ी फ़ाइलों पर दक्षता के लिए, मैं '2p; 3q'' या' 2 {p; q;} 'या इसी तरह का सुझाव दूंगा। – pilcrow

2

यदि आप अलग-अलग आदेशों में संचालन को तोड़ते हैं, तो यह स्पष्ट हो जाएगा कि यह किस तरह से काम करता है।

हेड -2 दो लाइनों की एक फ़ाइल बनाता है।

linux> head -2 /tmp/x > /tmp/xx 
linux> cat /tmp/xx 
hello 
mark 

पूंछ -1 फ़ाइल में अंतिम पंक्ति प्रिंट करता है।

linux> tail -1 /tmp/xx 
mark 
संबंधित मुद्दे