Преобразование регистра строки
uppercase
convert case
sed
For example, if I have:
a="Hi all"
"hi all"
The are various ways:
POSIX standard
tr
$ echo "$a" | tr '\[:upper:\]' '\[:lower:\]'
hi all
AWK
$ echo "$a" | awk '{print tolower\($0\)}'
hi all
Non-POSIX
You may run into portability issues with the following examples:
Bash 4.0
$ echo "${a,,}"
sed
$ echo "$a" | sed -e 's/\(.*\)/\L\1/'
Perl
$ echo "$a" | perl -ne 'print lc'
Bash
lc(){
case "$1" in
[A-Z])
n=$(printf "%d" "'$1")
n=$((n+32))
printf \\$(printf "%o" "$n")
;;
*)
printf "%s" "$1"
;;
esac}
word="I Love Bash"for((i=0;i<${#word};i++))do
ch="${word:$i:1}"
lc "$ch"done
Подробно и еще примеры здесь:
https://stackoverflow.com/questions/2264428/how-to-convert-a-string-to-lower-case-in-bash