'सिर' के लिए वैकल्पिक जो बाहर नहीं निकलता है?


13

मुझे एक उपयोगिता की आवश्यकता है जो पहले n लाइनों को प्रिंट करेगा, लेकिन फिर दौड़ना जारी रखेगा, बाकी लाइनों को चूसता रहेगा, लेकिन उन्हें प्रिंट नहीं करेगा। मैं इसका उपयोग टर्मिनल को एक प्रक्रिया के आउटपुट से अभिभूत नहीं करने के लिए करता हूं जिसे चलाने के लिए जारी रखने की आवश्यकता होती है (यह फ़ाइल में परिणाम लिखता है)।

मुझे लगा कि मैं कर सकता हूं process | {head -n 100; cat > /dev/null}, लेकिन क्या कुछ अधिक सुरुचिपूर्ण है?


2
प्रक्रिया सिर के बाद जारी रहेगी, यह अभी टर्मिनल पर प्रिंट नहीं होगी।
123

7
आप वास्तव में किस समस्या को हल करने की कोशिश कर रहे हैं ?
सातु कटसरा

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

7
@JuliePelletier और stdout बंद हो जाएंगे और अच्छी तरह से लिखे गए प्रोग्राम (जो केवल stdout को लिखते हैं, वैसे भी) नोटिस करेंगे और जल्दी समाप्त कर देंगे।
कैस

@castrap '' PIPE
सातो Katsura

जवाबों:


22

processकेवल 100 (या जो भी) लाइनों को प्रिंट करते समय आउटपुट को "चूसना" जारी रखने के लिए :

process | awk 'NR<=100'

या:

process | sed -n '1,100p'

13
मैं आम तौर पर सिर्फ का उपयोग... | tee /dev/null | head ...
डेविड Schwartz

2
@DavidSchwartz येप - यह मैं क्या करूँगा। और अधिक बेहतर, चूंकि आप किसी फ़ाइल में सभी आउटपुट को डंप कर सकते हैं और बाद के समय में इसकी जांच कर सकते हैं। आपको कभी नहीं पता है कि कब क्या होने वाला है - बदतर होने पर, आपके पास एक फाइल बैठी होती है जिसके चारों ओर आप कभी-कभी ओवरराइट करते हैं, सबसे अच्छे रूप में, आप इसका उपयोग लॉग के रूप में कर सकते हैं कि क्या / क्यों हुआ।
वीएलए
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.