#bash #shell #unix #solaris
#bash #оболочка #unix #solaris
Вопрос:
Привет, я хочу использовать переменную с заглавной буквы в ОС Solaris.
Из HELLO_WORLD в Hello_World
Или также ПРИВЕТ Привет
Пожалуйста, помогите, это ОС Solaris:
Oracle Solaris 10 8/11 s10s_u10wos_17b SPARC Copyright (c) 1983, 2011, Oracle и / или ее филиалы. Все права защищены. Собран 23 августа 2011
Ответ №1:
Если у вас есть Perl:
% echo HELLO_WORLD FOO bar | perl -pe '($_ = lc $_) =~ s/(b|_)./U$amp;/g'
Hello_World Foo Bar
perl -pe
считывает данные из стандартного ввода и печатает каждую строку после применения кода Perl, заданного в качестве аргумента. $_
является текущей строкой. lc
Функция преобразует строку в нижний регистр. Регулярное выражение соответствует границе слова или подчеркиванию, за которым следует любой символ. s///
Команда заменяет любую соответствующую подстроку на ее эквивалент в верхнем регистре. Завершение g
приводит к тому, что замена выполняется как можно больше раз в каждой строке (по умолчанию это делается один раз).
Если у вас нет Perl (я не знаю, включает ли Solaris его по умолчанию), попробуйте это:
% echo HELLO_WORLD FOO bar | tr A-Z a-z | sed 's/(_|<)./Uamp;/g'
Hello_World Foo Bar
Вы могли бы включить отображение верхнего и нижнего регистра в sed
команду using y///
, но в отличие tr
от нее, похоже, не принимает диапазоны:
% echo HELLO_WORLD FOO bar | tr A-Z a-z | sed 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/;s/(_|<)./Uamp;/g'
Hello_World Foo Bar