Преобразуйте подчеркивание в PascalCase, т.е. UpperCamelCase

На основной вопрос немного трудно ответить, поскольку файлы, возможно, были затронуты в различных точках.

Один файл, который не становится затронутым очень часто и создается, когда машина сначала загружается, является ssh файлом секретных ключей для сервера. Посмотрите на /etc/ssh/ssh_host_dsa_key. Если Вы не повторно вводите ssh сервер, тот файл должен быть датой установки машины. (Это исключает особые обстоятельства как этот являющийся образом виртуальной машины, и т.д.),

Тем не менее жемчуг 5.8.8 - то, что является текущим на RHEL 5. Да, это старо, но это - то, как Red Hat работает, с точки зрения устойчивости версии программного обеспечения. Исправления ошибок будут бэкпортированы к 5.8.8 пакетам, тем не менее, таким образом, Вы будете в безопасности в том отношении. Текущий определенный жемчуг 5.8.8 пакетов являются perl-5.8.8-38.el5_8, который был выпущен 29 октября 2012. rpm -qi --changelog perl |head -50 даст Вам вершину журнала изменений.

Кроме того, XML:: Синтаксический анализатор получен как отдельный пакет. Искать perl-XML-Parser. Это находится, вероятно, в EPEL или DAG.

28
26.09.2018, 23:33
8 ответов
$ echo "this_is_the_string" | sed -r 's/(^|_)([a-z])/\U\2/g'            
ThisIsTheString

Замечательный рисунок
(^ | _) В начале строки или после подчеркивания - первая группа
([AZ]) Один нижний регистр Письмо - вторая группа
На
\ u \ 2 верхняя часть второй группы
g глобально.

44
27.01.2020, 19:39

Я только в этом ответе только потому, что он короче и проще, чем любой другой.

sed -re "s~(^|_)(.)~\U\2~g"

Он говорит: Upcase, характер после _ или начало. Не писем не будет изменен, так как у них нет случая.

3
27.01.2020, 19:39

Директива хоста может принимать несколько хостов, например:

Host *.domain.tld specific-host.tld 10.*.*.*
User foo
Port 2222

Это установило бы пользователя и порт для всех хостов, соответствующих шаблону звезды, Явный хост Consic-Host.tld или, предполагая, что вы введите IP-адрес Числа, любой хост, чей первый IPv4 Byte 10. Тогда вы можете добавить хозяин / Имя хоста Пары, чтобы получить прозвища для определенных хостов, например.

-121--108582-

Не стоит представлять собой все целую строку в регулярном выражении матча - SED имеет модификатор / G , который позволяет прогуляться Несколько совпадений и заменяют каждый из них:

echo "this_is_the_string" | sed 's/_\([a-z]\)/\U\1/g;s/^\([a-z]\)/\U\1/g'

Первое регулярное выражение _ \ ([Az] \) - каждая буква после подчеркивания; Второй матч соответствует первой букве в строке.

6
27.01.2020, 19:39

Вот путь Perl:

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

Это может иметь дело со строками произвольной длины:

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

он будет соответствовать любому символу (. ), который заходит после запуска строки или подчеркивания ( (^ | _) ) и замените его верхней версией в корпусе ( UC ($ &) ). $ & - это специальная переменная, которая содержит то, что было только что соответствовало. E в конце в конце /// GE позволяет использовать выражения (функцию UC () в этом случае) в пределах замены и G делает его заменить все вхождение в строке. Вторая замена удаляет подчеркивания.

8
27.01.2020, 19:39

Так как вы используете Bash , если вы храните свою строку в переменной, вы также можете сделать это только оболочку:

uscore="this_is_the_string_to_be_converted"
arr=(${uscore//_/ })
printf %s "${arr[@]^}"
ThisIsTheStringToBeConverted

$ {Uscore // _ / } заменяет все _ с пространством, (....) (....) разбивает строку в массив, $ {ARR [@] ^} Первая буква каждого элемента в верхний регистр, а затем printf% s .. печатает все элементы один за другим.
Вы можете сохранить строку CARED в другую переменную:

printf -v ccase %s "${arr[@]^}"

и использовать / повторно повторно позже, например:

printf %s\\n $ccase
ThisIsTheStringToBeConverted

или, с ZSH :

uscore="this_is_the_string_to_be_converted"
arr=(${(s:_:)uscore})
printf %s "${(C)arr}"
ThisIsTheStringToBeConverted

($ {(s: _ :) USCORE}) Разбивает строку на _ в массив, (c) , используя первую букву каждого элемента и printf% s ... печатает все элементы один за другим ..
Чтобы сохранить его в другой переменной, вы можете использовать (J ::) , чтобы присоединиться к элементам:

ccase=${(j::)${(C)arr}}

и использовать / повторно использовать его позже:

printf %s\\n $ccase
ThisIsTheStringToBeConverted
9
27.01.2020, 19:39

В перле:

$ echo 'alert_beer_core_hemp' | perl -pe 's/(?:\b|_)(\p{Ll})/\u$1/g'
AlertBeerCoreHemp

Это также i18n -возможность:

$ echo 'алерт_беер_коре_хемп' | perl -CIO -pe 's/(?:\b|_)(\p{Ll})/\u$1/g'
АлертБеерКореХемп
2
27.01.2020, 19:39

Я сделал так:

echo "this_is_the_string" | sed -r 's/(\<|_)([[:alnum:]])/\U\2/g'

и получил этот результат:

ThisIsTheString
1
27.01.2020, 19:39

Мой выбор:

echo "this_is-the_string-2.0" |  perl -pe 's/(?:^|[^a-z])([a-z0-9])/\u$1/g'

Что приводит к:

ThisIsTheString20
0
01.11.2020, 11:15

Теги

Похожие вопросы