2010-03-24 40 views
8

Tôi đang viết tập lệnh bash cần chuyển đổi chuỗi thành chữ thường. Vấn đề là tôi đang làm nó trên một mac để 'tr' không có sẵn. Làm thế nào tôi có thể đi về việc này trên một mac?chữ hoa viết thường trong bash trên mac

Sự cố mà tôi đang cố gắng giải quyết là tập lệnh của tôi cần nhận ra một tiện ích mở rộng là .gif hoặc .jpg - và tôi không muốn phải kiểm tra .jpeg, .jPeg,. JPEG, .jpeg, vv vv vv ... nếu có một cách thông minh hơn để làm điều này hơn là chỉ chuyển đổi thành chữ thường và thử nghiệm cho gif, jpg và jpeg, tôi là tất cả tai :)

UPDATE:
tôi là một thằng ngốc.
Lý do mac này "không có" các chương trình văn bản chuyển đổi cơ bản là vì tôi ghi đè lên PATH với "hello" khi thực hiện một số thử nghiệm> _ <

+2

Mà ver sion của Mac bạn đang sử dụng? 10.6 chắc chắn có 'tr'. – kennytm

+0

10.5.8 ________ – Mala

Trả lời

10

trong bash, bạn có thể sử dụng nocaseglob

shopt -s nocaseglob 
for file in *.jpg *.jpeg *.gif 
do 
    echo "$file" 
done 
#turn off 
shopt -u nocaseglob 

nói chung để chuyển đổi các trường hợp, nhiều cách khác nhau

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

tác dụng phụ nào sẽ có? nó sẽ chỉ làm cho trận đấu bash trong một trường hợp-insensitive cách cho đến khi tôi biến nó trở lại? – Mala

+0

Ồ, tôi cũng cần mở rộng chữ thường khi viết lại ... điều này có giúp ích cho tôi không? – Mala

+0

ah nevermind, tôi sẽ với điều này và lồng nhau cho vòng: cho phần mở rộng trong jpg jpg gif, cho tập tin trong *. $ Extension, [...] done done; Cảm ơn! – Mala

2

trong bash bạn có thể sử dụng tận:

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

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

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

Trên mac, tôi nhận được "viết hoa: không tìm thấy lệnh". – ben3000

+0

Ngay cả đối với những người có thể có nó, nó sẽ hữu ích nếu bạn thêm đầu ra của mỗi ba lệnh. –

4

này được xây dựng vào bash:

để chuyển đổi $ y thành chữ hoa:

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

và để chuyển đổi $ y thành chữ thường:

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

Không hoạt động trên cài đặt Yosemite của tôi ..... Đã có "sự thay thế xấu" Bất kỳ ý tưởng nào? – MisterJ

+1

@MisterJ Tôi chưa cập nhật Yosemite nhưng tôi nghi ngờ nó sử dụng một phiên bản tương tự như phiên bản có sẵn với Mavericks, là 3.2.x (~ 8 tuổi). Thật không may các toán tử sửa đổi trường hợp này đã được giới thiệu trong Bash 4. Tôi khuyên bạn nên sử dụng ['' 'brew install bash'''] (http://brew.sh/) để có được một phiên bản hiện đại. – Exide

+2

@Exide yes Tôi xác nhận phiên bản bash yosemite cũ, tôi có các sự cố tương tự khác. Giải quyết chúng bằng cách sử dụng các phương pháp khác (như một tr cũ tốt cho cái này). – MisterJ

0
$ echo 'this IS some TEXT' | tr '[:upper:]' '[:lower:]' 
this is some text 
Các vấn đề liên quan