Это похоже на сетевую проблему.
Спросите, изменилось ли некоторое сетевое оборудование или было реконфигурировано. Скажите Вашему администратору сети, что Вы испытываете затруднения ssh'ing при, в брандмауэре может быть неверная конфигурация. Попытайтесь войти в систему от других машин или к другим машинам для улучшения диагноза.
Одной возможной причиной этих признаков является конфликт IP-адреса. Проверьте, где клиент и сервер получают их IP-адрес. Если Вы сохраняете ping server.example.com
выполнение, делает оно помогает установить связь, длятся дольше? Если так, у Вас есть конфликт IP-адреса. ( ping
помогает, потому что это продолжает говорить маршрутизаторам по пути направлять пакеты IP к Вашей машине — но Вы все еще потеряете соединение, если другая машина отправит ответ ARP перед Вами.), Если это - проблема, необходимо зафиксировать ее: устройте одну из машин, которые используют тот же адрес для использования другого адреса.
Также проверьте таблицу маршрутизации на своей машине. Удостоверьтесь, что пакеты к серверу направляются к надлежащему интерфейсу. (В то время как плохая таблица маршрутизации обычно устанавливала бы связь не, работают вообще, существует пограничный случай, где признаки - те, Вы описываете: если Вы получите адрес с DHCP, и сервер DHCP является также сервером, с которым Вы связываетесь — то адрес сервера DHCP будет направлен к желаемому интерфейсу, пока Ваш кэш ARP не истечет.)
Если я правильно понял, вы хотите изменить _x
на X
, если это происходит внутри строк '...'
.
Затем с помощью GNU sed
вы можете сделать:
sed -E ":1;s/^(([^']|'[^']*')*'[^']*)_([^'])/\1\u\3/;t1"
То есть заменить _X
после '...
, следуя последовательности либо не кавычки или совпадающие кавычки.
Что при вводе типа:
foo_bar 'ab_cd_ef gh_ij' zz_zz 'aa_bb''
delta_limits=Limits(general_settings['signal_lower_limit']
дает:
foo_bar 'abCdEf ghIj' zz_zz 'aaBb'
delta_limits=Limits(general_settings['signalLowerLimit']
Предполагается, что у вас нет строк, содержащих одинарные кавычки (как в 'foo \' bar '
). Если это так, вам необходимо учесть эти \ '
escape-последовательности с помощью:
sed -E ":1;s/^(([^']|'([^\']|\\\\.)*')*'([^\']|\\\\.)*)_([^'])/\1\u\5/;t1"
(также учитывает ' foo \\ '
).
Это все еще не касается "foo'bar"
кавычек или строк с обратной косой чертой или python
'' ', это многострочные цитаты' ''
. Вам понадобится парсер python
, чтобы иметь возможность охватить все случаи.
В вашем конкретном случае
sed -E ":1;s/('\w*)_(\w)/\1\u\2/g;t1"
также может быть достаточно (заменяет только _X
, следующие за '\ w *
). Это эквивалент GNU sed
(за исключением того, что \ w
точно соответствует) подхода Гленна perl
.
Я бы использовал для этого perl:
perl -pe "1 while s/('\w+)_([^']*)/\$1\\u\$2/" <<END
my_variable = 'a_string_with_snake_case_inside'
delta_llimits=Limits(general_settings['signal_lower_limit']
END
my_variable = 'aStringWithSnakeCaseInside'
delta_limits=Limits(general_settings['signalLowerLimit']
Это означает: пока поиск и замена продолжают находить совпадение, "1" (нет- op, который возвращает истину)