2010-03-24 7 views
8

पर बैश में लोअरकेस में अपरकेस के लिए अपरकेस मैं एक बैश स्क्रिप्ट लिख रहा हूं जिसे स्ट्रिंग को लोअरकेस में कनवर्ट करने की आवश्यकता है। समस्या यह है कि मैं इसे मैक पर कर रहा हूं इसलिए 'tr' उपलब्ध नहीं है। मैक पर ऐसा करने के बारे में मैं कैसे जा सकता हूं?मैक

जिस समस्या का मैं निपटने की कोशिश कर रहा हूं वह यह है कि मेरी स्क्रिप्ट को यह पहचानने की आवश्यकता है कि कोई एक्सटेंशन एक .gif या a .jpg है - और मैं .jpeg, .jPeg, के लिए जांच नहीं करना चाहता हूं।
मैं: जेपीईजी, .jpeg, आदि आदि आदि ... सिर्फ लोअरकेस और gif, jpg और jpeg के लिए परीक्षण करने के लिए परिवर्तित करने की तुलना में ऐसा करने का एक समझदारी भरा तरीका है कि अगर, मैं सब कान :)

अद्यतन कर रहा हूँ एक बेवकूफ हूँ कारण यह मैक इन मूल पाठ-रूपांतरण कार्यक्रमों "नहीं है" है, क्योंकि मैं के साथ "हैलो" जब कुछ परीक्षण> _ <

+2

कौन सा शब्द मैक का सायन आप उपयोग कर रहे हैं? 10.6 निश्चित रूप से 'tr' है। – kennytm

+0

10.5.8 ________ – Mala

उत्तर

10

बैश में, आप

shopt -s nocaseglob 
for file in *.jpg *.jpeg *.gif 
do 
    echo "$file" 
done 
#turn off 
shopt -u nocaseglob 
nocaseglob उपयोग कर सकते हैं कर पथ को अधिलेखित कर दिया

सामान्य मामलों में परिवर्तित करने में, विभिन्न तरीकों

echo "stRING" | awk '{print toupper($0)}' 

echo "STRING" | tr "[A-Z]" "[a-z]" # upper to lower 

echo "StrinNG" | sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' #lower to upper 
+0

इसका क्या दुष्प्रभाव होगा? क्या यह एक केस-असंवेदनशील तरीके से बैश मैच बना देगा जब तक कि मैं इसे वापस नहीं कर देता? – Mala

+0

ओह मुझे लोअरकेस में विस्तार प्राप्त करने की भी आवश्यकता है क्योंकि मैं इसे वापस लिख रहा हूं ... क्या यह मेरे लिए ऐसा करेगा? – Mala

+0

आह कभी नहीं, मैं इसके साथ जा रहा हूं और लूप के लिए घोंसला कर रहा हूं: gif jpg jpeg में विस्तार के लिए, * $ एक्सटेंशन में फ़ाइल के लिए, [...] किया गया; धन्यवाद! – Mala

2

बैश में आप उपयोग कर सकते हैं भुनाने:

+०१२३५१६४१०६
echo "HelLo! how ArE you?" | capitalize -u 

echo "HelLo! how ArE you?" | capitalize -l 

echo "HelLo! how ArE you?" | capitalize -c 
+3

मैक पर, मुझे "पूंजीकरण: आदेश नहीं मिला" मिलता है। – ben3000

+0

यहां तक ​​कि जिनके पास यह हो सकता है, यह उपयोगी होगा यदि आपने उन तीनों आदेशों में से प्रत्येक का आउटपुट जोड़ा। –

4

इस बैश में बनाया गया है:

अपरकेस में $ y कन्वर्ट करने के लिए:

y="this Is A test" 
echo "${y^^}" 

और लोअरकेस में $ y कन्वर्ट करने के लिए:

y="THIS IS a TeSt" 
echo "${y,,}" 
+5

मेरे योसमेट इंस्टॉल पर काम नहीं कर रहा ..... "खराब प्रतिस्थापन" कोई विचार था? – MisterJ

+1

@MisterJ मैंने अभी तक योसामेट को अपडेट नहीं किया है, लेकिन मुझे संदेह है कि यह मैवरिक्स के साथ उपलब्ध संस्करण के समान संस्करण का उपयोग करता है, जो कि 3.2.x (~ 8 वर्ष पुराना) है। दुर्भाग्यवश इन केस संशोधन ऑपरेटर को बैश 4 में पेश किया गया था। मैं आधुनिक संस्करण प्राप्त करने के लिए ['' 'ब्रू इंस्टॉल बैश '''] (http://brew.sh/) का उपयोग करने का सुझाव देता हूं। – Exide

+2

@ आगे हाँ मैं पुष्टि करता हूं कि बैश योसमेट संस्करण पुराना है, मुझे अन्य समान समस्याएं थीं। उन्हें अन्य तरीकों का उपयोग करके हल किया (जैसे इस के लिए एक अच्छी पुरानी tr)। – MisterJ

0
$ echo 'this IS some TEXT' | tr '[:upper:]' '[:lower:]' 
this is some text