यदि मैं cat -n text.txt
स्वचालित रूप से लाइनों की संख्या का उपयोग करता हूं, तो मैं केवल कुछ गिने पंक्तियों को दिखाने के लिए कमांड का उपयोग कैसे करूं।
tail
+ head
यह भी कर सकते हैं, जैसा किawk
यदि मैं cat -n text.txt
स्वचालित रूप से लाइनों की संख्या का उपयोग करता हूं, तो मैं केवल कुछ गिने पंक्तियों को दिखाने के लिए कमांड का उपयोग कैसे करूं।
tail
+ head
यह भी कर सकते हैं, जैसा किawk
जवाबों:
उपयोग sed
प्रयोग
$ cat file
Line 1
Line 2
Line 3
Line 4
Line 5
Line 6
Line 7
Line 8
Line 9
Line 10
एक लाइन प्रिंट करने के लिए (5)
$ sed -n 5p file
Line 5
कई पंक्तियों को प्रिंट करने के लिए (5 और 8)
$ sed -n -e 5p -e 8p file
Line 5
Line 8
विशिष्ट रेंज प्रिंट करने के लिए (5 - 8)
$ sed -n 5,8p file
Line 5
Line 6
Line 7
Line 8
अन्य विशिष्ट लाइन के साथ रेंज प्रिंट करने के लिए (5 - 8 और 10)
$ sed -n -e 5,8p -e 10p file
Line 5
Line 6
Line 7
Line 8
Line 10
लक्ष्यों के आधार पर मुझे सिर या ग्रीप पसंद है
cat /var/log/syslog -n | head -n 50 | tail -n 10
50 के माध्यम से 41 लाइनों को वापस करेगा।
या
cat /var/log/syslog -n | grep " 50" -b10 -a10
40 लाइनों को दिखाएगा।
लॉग फ़ाइलों को पार्स करने के लिए दोनों काफी उपयोगी हैं।
cat
हालांकि न तो उदाहरण की जरूरत है
cat
ओपी जो चाहता है वह नहीं कर सकता
जैसा कि दूसरों ने आपको दिखाया है, उपयोग करने की कोई आवश्यकता नहीं है cat -n
। अन्य कार्यक्रम इसे आपके लिए करेंगे। यदि, हालांकि, आपको वास्तव में cat -n
केवल विशिष्ट लाइनों को दिखाने और आउटपुट दिखाने की आवश्यकता है (उदाहरण के लिए, 4-8, 12 और 42), तो आप यह कर सकते हैं:
$ cat -n file | awk '$1>=4 && $1<=8 || $1==12 || $1==42'
4 Line 4
5 Line 5
6 Line 6
7 Line 7
8 Line 8
12 Line 12
42 Line 42
में awk
, $1
पहला क्षेत्र है, इसलिए यह कमांड उन सभी लाइनों को प्रिंट करता है जिनके पहले क्षेत्र i हैं) 4 और 8 (सम्मिलित) या ii) 12 या iii) 42 के बीच।
यदि आप cat -n
फ़ाइल से मूल पंक्तियाँ प्राप्त करने के लिए जोड़ा गया क्षेत्र हटाना चाहते हैं , तो आप यह कर सकते हैं:
$ cat -n file | awk '$1>=4 && $1<=8 || $1==12 || $1==42{sub(/^\s*[0-9]+\s*/,""); print}'
Line 4
Line 5
Line 6
Line 7
Line 8
Line 12
Line 42