mac上bash中的大写字母到小写字母

时间:2010-03-24 06:29:44

标签: macos bash case

我正在编写一个bash脚本,需要将字符串转换为小写。问题是我在mac上这样做,所以'tr'不可用。我怎样才能在mac上执行此操作?

我正在努力解决的问题是我的脚本需要识别扩展名是.gif还是.jpg - 而且我不想检查.jpeg,.jPeg,.JPEG ,.JPeg等等...如果有一种更聪明的方法,只需转换为小写并测试gif,jpg和jpeg,我都是耳朵:)

更新:
我是个白痴。
这个mac“没有”这些基本的文本转换程序的原因是因为我在做一些测试> _<

时用“hello”覆盖了PATH

5 个答案:

答案 0 :(得分:13)

在bash中,你可以使用nocaseglob

shopt -s nocaseglob
for file in *.jpg *.jpeg *.gif
do
  echo "$file"
done
#turn off
shopt -u 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

答案 1 :(得分:6)

这是内置于bash:

将$ y转换为大写:

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

并将$ y转换为小写:

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

答案 2 :(得分:4)

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

答案 3 :(得分:2)

在bash中,您可以使用 大写

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

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

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

答案 4 :(得分:0)

上排至under_score:

echo "ThisIsTheString" | perl -pe 's/(^|[A-Z])./_$&/g;s/^.//g;s/(^|[A-Z])./lc($&)/ge'

输出:this_is_the_string

在大写字母下得分:

echo "this_is_the_string" | perl -pe 's/(^|_)./uc($&)/ge;s/_//g'

输出:ThisIsTheString

perl备忘单here