2012-04-09 12 views
6

पर कनवर्ट करें, मैं प्रत्येक पंक्ति के पहले अक्षर को फ़ाइल के अंत तक कम केस में कनवर्ट करना चाहता हूं। मैं शैल स्क्रिप्टिंग का उपयोग करके यह कैसे कर सकता हूं?दिए गए फ़ाइल के पहले अक्षर को

मैं इस कोशिश की:

plat=`echo $plat |cut -c1 |tr [:upper:] [:lower:]``echo $plat |cut -c2-` 

लेकिन इस लोअर केस में केवल प्रथम चरित्र बदल देता है।

मेरे फ़ाइल इस तरह दिखता है:

Apple 
Orange 
Grape 

अपेक्षित परिणाम:

apple 
orange 
grape 

उत्तर

6

आपको लगता है कि sed के साथ क्या कर सकते हैं:

sed -e 's/./\L&/' Shell.txt 

(शायद सुरक्षित करने के लिए

sed -e 's/^./\L&\E/' Shell.txt 

अगर आप कभी भी इस का विस्तार करना चाहते)

+0

त्वरित प्रतिक्रिया – Sijith

+0

के लिए धन्यवाद यह सभी पहले वर्ण को कम मामले में परिवर्तित करता है लेकिन फ़ाइल में पुराने कैप्स स्ट्रिंग को प्रतिस्थापित नहीं करता है। क्या ऊपरी जांचना और उसी फ़ाइल में तदनुसार प्रतिस्थापित करना संभव है – Sijith

+0

मुझे समझ में नहीं आता कि आपका क्या मतलब है। यह वही करता है जो आपका प्रश्न कहता है: "फ़ाइल के अंत तक प्रत्येक पंक्ति के पहले अक्षर को कम केस में परिवर्तित करें" – Mat

2

प्रयास करें:।

plat=`echo $plat |cut -c1 |tr '[:upper:]' '[:lower:]'``echo $plat |cut -c2-` 
2

शुद्ध बैश 4.0+, पैरामीटर प्रतिस्थापन:

>"$outfile"       # empty output file 
while read ; do 
    echo "${REPLY,}" >> "$outfile" # 1. character to lowercase 
done < "$infile" 
mv "$outfile" "$infile" 
0

यहां एक एसईडी आदेश केवल का उपयोग करता है POSIX sed विशेषताएं:

sed -e 'h;s,^\(.\).*$,\1,;y,ABCDEFGHIJKLMNOPQRSTUVWXYZ,abcdefghijklmnopqrstuvwxyz,;G;s,\ 
.,,' 

ये दो लाइनें हैं, न्यूलाइन कैरेक्टर को उद्धृत करने के लिए बैकस्लैश में समाप्त होने वाली पहली पंक्ति।

संबंधित मुद्दे