एक कमांड से आउटपुट के साथ दो काम करना


9

मेरे पास एक कार्यक्रम है texcountजो मेरे LaTeX दस्तावेज़ में शब्दों की संख्या को आउटपुट करता है। मैं भी इस के उत्पादन को पाइप कर सकता हूं sedताकि newlines TeX लाइनब्रेक बना सके और इसे एक फाइल पर लिख सकूं जिसे मैं अपने अंतिम दस्तावेज में शामिल कर सकता हूं। लेकिन जब मैं texcount foo.tex | sed s/$/'\\\\'/ > wc.texकमांड लाइन आउटपुट texcountदबाता हूं ।

मैं टर्मिनल में प्रदर्शित होने वाली पहली कमांड का आउटपुट कैसे प्राप्त कर सकता हूं और sed को पाइप कर सकता हूं ?

जवाबों:


9

आप दूसरी कमांड के लिए एक अनाम पाइप का उपयोग कर सकते हैं:

texcount foo.tex | tee >(sed s/$/'\\\\'/ > wc.tex)

इस उत्तर का अनिवार्य हिस्सा उपयोग करना है tee। यदि आप बैश जैसे कुछ गोले हैं, तो आप टी के आउटपुट का उपयोग कर सकते हैं >(some further commands)। अन्य गोले में, आपको एक फ़ाइल नाम तर्क देना होगा (यह इसके संचालन का मानक तरीका है), और फिर चलाएं some further commands < thatfile, और उसके बाद थाफाइल को हटा दें। या नीचे हरि का उत्तर देखें।
संदिग्ध

टी, टी और टी।
बैगवधर सिप

7

आपको "टी" कमांड की आवश्यकता है, जो आपको पाइप को विभाजित करने की अनुमति देता है।

texcount foo.tex | tee >output.txt | sed s/$/'\\\\'/ > wc.tex ; cat output.txt

यह आपको अतिरिक्त output.txt फ़ाइल को छोड़ देगा। अधिक जानकारी के लिए इसे पढ़ें: http://www.unixtutorial.org/2007/12/tee-replicate-standard-output/ आप "मैन टी" भी कर सकते हैं।


texcount foo.tex | tee unmodified |sed s/$/'\\\\'/ > modifiedदो फ़ाइलों में आउटपुट के संशोधित और अनमॉडिफाइड संस्करण डालता है। मैं टर्मिनल को अनमॉडिफाइड संस्करण कैसे प्रिंट करूं? मैंने कोशिश की, tee stdoutलेकिन कुछ भी नहीं
छापा

3
आप ऐसा नहीं कर सकते, क्योंकि टी अपने डेटा को स्टडआउट और एक फाइल को भेजता है। स्टडआउट वह है जो sed को इनपुट बनाता है। आप && cat unmodifiedअंत में जोड़ सकते हैं । यह टर्मिनल को अनमॉडिफाइड आउटपुट डंप करेगा।
कीथबी

यहाँ उचित कमांड लाइन होगी texcount foo.tex | tee output.txt | sed s/$/'\\\\'/ > wc.tex ; cat output.txt। या आप उपयोग कर सकते हैं texcount foo.tex | tee output.txt; sed s/$/'\\\\'/ output.txt > wc.tex। या तो मामले में, आप शायद rm output.txtबाद में चाहते हैं ।
संदिग्ध

@dubiousjim यह अर्धविराम सही है - पाइप काम करता है, लेकिन अर्ध उपनिवेश बेहतर व्यक्त करता है कि क्या इरादा है।
डैनी स्टेपल

6

आप काफी मुहावरेदार का उपयोग कर सकते हैं

texcount foo.tex | tee /dev/tty | sed s/$/'\\\\'/ > wc.tex

/dev/tty एक जादू उपकरण है जो वर्तमान प्रक्रिया के नियंत्रण टर्मिनल को संदर्भित करता है।

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