我正在编写一个bash脚本,需要将字符串转换为小写。问题是我在mac上这样做,所以'tr'不可用。我怎样才能在mac上执行此操作?
我正在努力解决的问题是我的脚本需要识别扩展名是.gif还是.jpg - 而且我不想检查.jpeg,.jPeg,.JPEG ,.JPeg等等...如果有一种更聪明的方法,只需转换为小写并测试gif,jpg和jpeg,我都是耳朵:)
更新:
我是个白痴。这个mac“没有”这些基本的文本转换程序的原因是因为我在做一些测试> _<
答案 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