क्या पिछली एन लाइनों के अलावा सभी फाइलों को मुद्रित करने के लिए कोई (POSIX कमांड लाइन) तरीका है? केस का प्रयोग करें, मेरे पास अज्ञात आकार की कई फाइलें होंगी, जिनमें से सभी को ज्ञात आकार का बॉयलरप्लेट फ़ूटर होगा, जिसे मैं निकालना चाहता हूं। मैं सोच रहा था कि क्या पहले से ही एक उपयोगिता है जो इसे लिखने से पहले करता है।आखिरी एन लाइनों को छोड़कर सभी चीजों को उलटा/प्रिंट करना?
उत्तर
सिर के अधिकांश संस्करण (1) - जीएनयू विशेष रूप से व्युत्पन्न, लेकिन बीएसडी व्युत्पन्न नहीं - इसमें ऐसा करने की सुविधा है। यदि आप प्रिंट करने के लिए लाइनों की संख्या के लिए ऋणात्मक संख्या का उपयोग करते हैं तो यह अंत को छोड़कर फ़ाइल के शीर्ष को दिखाएगा।
तो जैसा:
head -n -10 textfile
head
उपयोगिता अपने दोस्त है।
head
का आदमी पृष्ठ से
:
-n, --lines=[-]K print the first K lines instead of the first 10; with the leading `-', print all but the last K lines of each file
पाद लेख एक सुसंगत लाइन कि कहीं और प्रकट नहीं होता है के साथ शुरू होता है, तो आप sed
उपयोग कर सकते हैं:
sed '/FIRST_LINE_OF_FOOTER/q' filename
कि पाद लेख की पहली पंक्ति मुद्रित करता है; आप से बचने के लिए कि चाहते हैं:
sed -n '/FIRST_LINE_OF_FOOTER/q;p' filename
यह गिनती लाइनों की तुलना में अधिक मजबूत किया जा सकता है, तो भविष्य में पाद लेख में परिवर्तन के आकार। (या पहली पंक्ति में बदलाव होने पर यह कम मजबूत हो सकता है।)
एक और विकल्प, यदि आपके सिस्टम का head
कमांड head -n -10
का समर्थन नहीं करता है, तो आप जिस लाइन को दिखाना चाहते हैं उसकी संख्या को प्रीकंप्यूट करना है। निम्नलिखित बैश विशेष वाक्य रचना पर निर्भर करता है:
lines=$(wc -l < filename) ; ((lines -= 10)) ; head -$lines filename
ध्यान दें कि head -NUMBER
वाक्य रचना पिछली संगतता के लिए head
के कुछ संस्करणों के द्वारा समर्थित है; POSIX केवल head -n NUMBER
फ़ॉर्म पर अनुमति देता है। पॉज़िक्स भी सकारात्मक दशमलव पूर्णांक होने के लिए -n
पर तर्क को अनुमति देता है; head -n 0
जरूरी नहीं है कि नो-ऑप।
एक POSIX अनुरूप समाधान है:
lines=$(wc -l < filename) ; lines=$(($lines - 10)) ; head -n $lines filename
आप प्राचीन पूर्व POSIX के गोले से निपटने के लिए की जरूरत है, तो आप इस पर विचार हो सकता:
lines=`wc -l < filename` ; lines=`expr $lines - 10` ; head -n $lines filename
इनमें से किसी अगर अजीब बातें करते हैं हो सकता है एक फ़ाइल 10 या कम लाइन लंबी है।
पीओएसईक्स के पास कमांड प्रतिस्थापन के लिए प्राचीन बैकटिक्स के अलावा '$ (...)' वाक्यविन्यास है, और इसमें '$ ((...)) 'अंकगणितीय विस्तार। तो बैकटिक्स और 'expr' के साथ प्राचीन जाने की जरूरत नहीं है। [पॉज़िक्स कमांड सबस्टिट्यूशन] (http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_03) – geirha
@geirha: अच्छा बिंदु, और सवाल विशेष रूप से POSIX के बारे में पूछता था। लेकिन प्राचीन वाक्यविन्यास को जानना उपयोगी हो सकता है यदि किसी भी प्री-पॉज़िक्स शैल अभी भी उपयोग में हैं। –
ऐसा करने के लिए कोई मानक आदेश नहीं है, लेकिन आप एन लाइनों के बफर को भरने के लिए अजीब या sed का उपयोग कर सकते हैं, और इसे पूर्ण होने के बाद सिर से प्रिंट कर सकते हैं। जैसेawk साथ:
awk -v n=5 '{if(NR>n) print a[NR%n]; a[NR%n]=$0}' file
"WC" "गणित" + "पूंछ" विधि + की तुलना में शायद कम कुशल है, लेकिन आसान को देखने के लिए:
tail -r file.txt | tail +NUM | tail -r
कहाँ NUM
एक से अधिक है समाप्ति लाइनों की संख्या जिन्हें आप निकालना चाहते हैं, उदाहरण के लिए +11 आखिरी 10 लाइनों के अलावा सभी प्रिंट करेगा। यह बीएसडी पर काम करता है जो head -n -NUM
वाक्यविन्यास का समर्थन नहीं करता है।
यह आसान है। आपको उन पंक्तियों की संख्या में + जोड़ना होगा जिन्हें आप टालना चाहते थे।
यह उदाहरण आप के लिए 10 -n पहले 9
पूंछ inputfile
को छोड़कर सभी लाइनों (हाँ, नहीं पहले 10 ... क्योंकि यह अलग मायने रखता है ... अगर आप चाहते हैं देता है 10, बस पूंछ-एन 11 इनपुटफाइल टाइप करें)
- 1. चीजों को विकेन्द्रीकृत करना एंड्रॉइड
- 2. PHPUnit चीजों को अनदेखा करना?
- 3. यूनिक्स शैल: पहले 20 को छोड़कर फ़ाइल की आखिरी पंक्तियां कैसे प्राप्त करें?
- 4. पहले दो और आखिरी को छोड़कर किसी तालिका से सभी पंक्तियों को कैसे निकालें?
- 5. jQuery: ___ को छोड़कर सभी को लक्षित करें?
- 6. विम में, मैं पिछले 100 लाइनों को छोड़कर फ़ाइल में सभी लाइनों को कैसे हटा सकता हूं?
- 7. मुझे छोड़कर सभी आगंतुकों को रीडायरेक्ट करना चाहते हैं
- 8. सीएसएस चयनकर्ताओं के साथ पहले और आखिरी को छोड़कर सभी बच्चों का चयन कैसे करें
- 9. मैं फ़ाइल से आखिरी 10 लाइनों के अलावा सभी को कैसे हटा सकता हूं?
- 10. MySQL तालिका से सभी अनुक्रमणिका को छोड़कर
- 11. jQuery चयनकर्ता पहले को छोड़कर सभी
- 12. मुझे छोड़कर सभी सरणी तत्वों को हटाएं?
- 13. त्रुटियों और चेतावनियों को छोड़कर सभी आउटपुट को दबाएं
- 14. एनएसआईएस - एक फाइल को छोड़कर सभी फाइलों को हटाएं
- 15. रनटाइम अपवादों को छोड़कर सभी अपवादों को पकड़ना संभव है?
- 16. कोशिश को छोड़कर ब्लॉक
- 17. .htaccess - को छोड़कर
- 18. को छोड़कर एक
- 19. में हे (एन) एक सरणी में सभी मतभेदों को
- 20. uniq - पंक्तियों की तुलना करते समय पिछले एन वर्ण/फ़ील्ड को छोड़कर
- 21. जावा स्ट्रिंग एस्ट्रोफ़ेस को छोड़कर सभी गैर-अल्फान्यूमेरिक पर विभाजित
- 22. Rbuildignore और निर्देशिकाओं को छोड़कर
- 23. संख्यात्मक। समस्या को छोड़कर
- 24. विंडोज टेक्स्ट फ़ाइल (/ आर/एन अलगाव) से लाइनों को कैसे विभाजित करें
- 25. XPath - पहले विशिष्ट तत्वों को छोड़कर सभी निम्नलिखित भाई बहन
- 26. तरह लाइनों, लेकिन केवल पहले एन पात्रों
- 27. बाश: मैनिफेस्ट में नामित सभी को छोड़कर सभी फ़ाइलों को कैसे हटाएं?
- 28. फॉर्म नियंत्रण को छोड़कर एक्सेल वर्कशीट में सभी आकार हटाएं
- 29. सक्रिय एक को छोड़कर सभी टैब बंद करें?
- 30. मेवेन निर्भरताओं को छोड़कर
पॉज़िक्स में, हालांकि, एक सकारात्मक पूर्णांक होना चाहिए। – choroba
सख्त POSIX के लिए पर्याप्त है। मुझे अपने "सबसे" के साथ स्पष्ट होना चाहिए था। यदि आप अधिक तेज़ और गंदे POSIX विधि के लिए जा रहे हैं, तो मुझे लगता है कि 'wc -l' प्लस कुछ गणित आपको' head' –
पर जाने के लिए एक मूल्य प्राप्त करेगा, इस सुविधा की कमी (1) के अधिकांश कार्यान्वयन की कमी है। केवल उन्हीं कार्यान्वयन के बारे में मुझे पता है कि यह गैर-पोर्टेबल कोड है। –