2011-03-23 14 views
8

शीर्षक में प्रत्येक फ़ाइल के 80 वर्णों से अधिक प्रत्येक फ़ाइल का फ़ाइल नाम और पंक्ति संख्या मुद्रित करें शीर्षक शीर्षक बताता है। मैं यूनिक्स, कॉर्न शैल में काम कर रहा हूं। और मैं प्रत्येक फ़ाइल के फ़ाइल नाम और लाइन नंबर को मुद्रित करने का प्रयास कर रहा हूं जो वर्तमान फ़ोल्डर में प्रत्येक फ़ाइल के 80 वर्णों से अधिक है।यूनिक्स: फ़ाइल

मैं उपयोग कर सकते हैं "awk 'लंबाई> 80' * सीपीपी" सभी लाइनों 80 वर्ण से अधिक देने के लिए है, लेकिन मैं लाइन नंबर या फ़ाइल नाम बाहर खींच नहीं कर पा रहे। मैंने बिल्ली का उपयोग करने की भी कोशिश की, क्योंकि यह लाइन संख्याओं की अनुमति देता है।

test.cpp line 36 
    std::cout << ... line that is over 80 characters 

test2.cpp line 40 
    Another line that is over 80 characters 

कोई मदद अद्भुत होगा:

विचार इस के समान उत्पादन प्राप्त करने के लिए है।

उत्तर

11

लगभग वहां! यह आपको एक grep शैली उत्पादन, विम जैसे संपादकों में उपयोगी देना उत्पादन नेविगेट करने के लिए सक्षम होने के लिए होगा:

awk 'length > 80 {print FILENAME "(" FNR "): " $0}' *.cpp 

या प्रारूप आप के लिए कहा देने के लिए:

awk 'length > 80 {print FILENAME " line " FNR "\n\t" $0}' *.cpp 

FILENAME और FNR (NR की तरह, लेकिन उस विशेष फ़ाइल के लिए) awk में विशेष चर हैं।

या आप grep ही इस्तेमाल कर सकते हैं निश्चित रूप से,:

grep -n '^.\{80\}' *.cpp 
+0

धन्यवाद! यह लगभग सही है; लाइन नंबर सही पाने के लिए कोई रास्ता है? मुझे लगता है कि मुद्रित लाइन नंबर सभी फ़ाइलों के संयुक्त पाठ से मेल खाता है, न कि व्यक्तिगत फ़ाइल स्वयं। – carlinyuen

+1

@ करलिन: दिलचस्प। मैं 'grep' का उपयोग करने का सुझाव देता हूं। – Johnsyweb

+1

यह भी काम करता है। धन्यवाद! – carlinyuen

0
awk 'length > 80 { print FILENAME ":" NR ": " $0 }' *.cpp 
+0

धन्यवाद! यह लगभग सही है; लाइन नंबर सही पाने के लिए कोई रास्ता है? मुझे लगता है कि मुद्रित लाइन नंबर सभी फ़ाइलों के संयुक्त पाठ से मेल खाता है, न कि व्यक्तिगत फ़ाइल स्वयं। – carlinyuen

+0

@ करलिन: हाँ। मेरे उत्तर में 'एनआर' के बजाय' एफएनआर' का प्रयोग करें। – Johnsyweb