2012-01-25 4 views
4

Я пытался преобразовать строчные буквы в верхний регистр. Я столкнулся с различными альтернативами, например, одним списком в StackOverflow question. Однако, что я увидел, что они только что напечатаны. Я хочу сохранить его в другую переменную, которую я могу использовать позже. Может ли кто-нибудь сказать, как я могу это достичь?Преобразование символа в регистр Верхний регистр для нижнего и наоборот

ответ

6

Ваши данные $a. Новая переменная $b.
(заимствован из here написанных @ ghostdog74)

использования tr:

b=$(tr '[A-Z]' '[a-z]' <<< $a) 

если вы используете tcsh, а затем использовать echo вместо <<<:

set b=`echo "$a" | tr '[A-Z]' '[a-z]'` 
+1

Вы должны разместить их как отдельные ответы :) – khachik

+0

я шучу :) – khachik

+0

Это для Tcsh? Рассмотрим следующее, поскольку вы упомянули ошибку.

 #! /bin/tcsh set a = "Helo World!" echo $a '<-' set b = $(tr '[A-Z]' '[a-z]' <<< $a) # error echo 'a=' $a 'b=' $b  
Оболочка дает мне ошибку: «Недопустимое имя переменной». по строке 4 – Abhinav

2

использование awk:

b=$(awk '{print tolower($0)}' <<< $a) 
3

использованием bash 4,0:

b=${a,,} 
+1

Любовь, как вы показали это на трех благочестивых языках. –

2

использованием perl:

b=$(perl -e 'print lc <>;' <<< $a) 
1

Я знаю, что это старенькая пост, но я сделал этот ответ на другой сайт так Я думал, что разместил его здесь:

здесь приходит программистам ответить ....

UPPER -> ниже: использование питона:

b=`echo "print '$a'.lower()" | python` 

Или Ruby:

b=`echo "print '$a'.downcase" | ruby` 

Или Perl (вероятно, мой любимый):

b=`perl -e "print lc('$a');"` 

Или PHP:

b=`php -r "print strtolower('$a');"` 

Или Awk:

b=`echo "$a" | awk '{ print tolower($1) }'` 

Или Sed:

b=`echo "$a" | sed 's/./\L&/g'` 

Или Bash 4:

b=${a,,} 

Или NodeJS, если у вас есть:

b=`echo "console.log('$a'.toLowerCase());" | node` 

Вы также можете использовать dd (но я бы не стал!):

b=`echo "$a" | dd conv=lcase 2> /dev/null` 

ниже -> ВЕРХНЯЯ:

использование питона:

b=`echo "print '$a'.upeer()" | python` 

Или Ruby:

b=`echo "print '$a'.upcase" | ruby` 

Или Perl (вероятно, мой любимый):

b=`perl -e "print uc('$a');"` 

Или PHP:

b=`php -r "print strtoupper('$a');"` 

Или Awk:

b=`echo "$a" | awk '{ print toupper($1) }'` 

Или Sed:

b=`echo "$a" | sed 's/./\U&/g'` 

Или Bash 4:

b=${a^^} 

Или NodeJS, если у вас есть:

b=`echo "console.log('$a'.toUpperCase());" | node` 

Вы можете также использовать dd (но я бы не стал!):

b=`echo "$a" | dd conv=ucase 2> /dev/null` 

Кроме того, когда вы говорите, «оболочка» Я предполагаю, что вы имеете в виду bash но если вы можете использовать zsh это так же просто, как

b=$a:l 

для нижнего корпуса и

b=$a:u 

для верхнего регистра.

0

Все предыдущие ответы верны, я просто добавляю это, потому что нет необходимости объявлять переменную и т. Д., Если вы просто конвертируете тексты.

echo changethistoupper | tr [a-z] [A-Z] 
echo CHANGETHISTOLOWER | tr [A-Z] [a-z] 

enter image description here