मैंने वर्णों की संख्या की गणना करने के लिए कमांड wc -c का उपयोग किया है लेकिन यह मुझे एक गलत संख्या, वर्णों की संख्या और उदाहरण के रूप में एक देता है:
echo "k" | wc -c
यह मुझे 2 अक्षर देता है
तो 1 क्यों नहीं?
मैंने वर्णों की संख्या की गणना करने के लिए कमांड wc -c का उपयोग किया है लेकिन यह मुझे एक गलत संख्या, वर्णों की संख्या और उदाहरण के रूप में एक देता है:
echo "k" | wc -c
यह मुझे 2 अक्षर देता है
तो 1 क्यों नहीं?
जवाबों:
के लिए मदद संदेश पर एक नज़र डालें wc। -cविकल्प वर्णों की संख्या बाहर प्रिंट करता है। echoआदेश डिफ़ॉल्ट रूप से एक नई पंक्ति चरित्र भी शामिल है। जब wcनई पंक्ति को देखता है तो इसे दूसरे वर्ण के रूप में गिनता है और इसलिए आपके परिणाम में अतिरिक्त गिनती होती है। आप नीचे दिखाए गए विकल्पों में से किसी एक का उपयोग करके इसे प्राप्त कर सकते हैं; -wशब्दों की संख्या को -lगिनता है और लाइनों की संख्या को गिनता है।
echo "k" | wc -w
echo "k" | wc -l
आप नई वर्णों को छोड़कर वर्णों की संख्या प्राप्त wcकरने के awkलिए के आउटपुट को पाइप कर सकते हैं :
wc <filename> | awk '{print $3-$1}'
wcइस क्रम में कोई विकल्प नहीं होने पर डिफ़ॉल्ट आउटपुट न्यूलाइन वर्णों ($ 1 से awk), शब्दों की संख्या और वर्णों की संख्या ($ 3 से awk) को प्रिंट करता है।
echo -n "k" | wc -c। यह समझ में आता है
printfअक्सर इससे पहले पसंद किया echoजाता है जब स्थिरता महत्वपूर्ण होती है। जब तक विशेष रूप से नहीं पूछा जाता है, तब तक यह एक नई पंक्ति नहीं छापता है, इसलिए printf "k" | wc -mदेता है 1, अर्थात मुद्रित वर्णों की संख्या। किसी फ़ाइल की पहली पंक्ति में वर्णों की गणना करने के लिए, कोई भी ऐसा कर सकता है $(($(head -1 file | wc -m)-1))( उदाहरण के $(())लिए नई पंक्ति को हटाने के लिए शेल अंकगणित करने के लिए इसे लपेटें ) या इससे भी बेहतर: awk और do का उपयोग करें awk 'NR==1{print length}' file।
जब आप echo "k", echoजो कुछ भी आपने इसे प्रिंट आउट करने के लिए कहा था, उसके लिए एक नया चरित्र प्रस्तुत करता है। आप इसे -nअक्षम करने के लिए विकल्प का उपयोग कर सकते हैं :
echo -n k | wc -c
1
उस अदृश्य चरित्र को देखने के लिए , आप धारा को डंप कर सकते हैं odया hd:
echo k | od -t c
0000000 k \n
echo k | hd
00000000 6b 0a |k.|
echo k | od -t a -A n
k nl
-cविकल्प के लिए एक बाइट गिनती है, न कि वर्ण को महत्वपूर्ण है