Следующая команда должна работать,
sed -r 's/Ticket_[A-Za-z0-9]+/Ticket_Final/g'
Где,
-r
:Использование расширенных регулярных выражений s
:Для поиска и замены непрерывного длинного потока [A-Za-z0-9]+
:Несколько буквенно-цифровых букв содержат A-Z
, a-z
,0-9
Если это работает, вы можете использовать флаг -i
для изменения изменений в исходном файле, как показано ниже:
[arif@arif ~]$ sed -ri 's/Ticket_[A-Za-z0-9]+/Ticket_Final/g' filename.xml
Например, вы работаете со следующими XML
,
[arif@arif ~]$ cat /tmp/temp.xml
<?xml version="1.0"?>
<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#Ticket_Release1)>
<!ELEMENT from (#Ticket_V2)>
<!ELEMENT heading (#Ticket_V3)>
<!ELEMENT body (#Ticket_Release2)>
]>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>String Replacer</heading>
<body>These text shouldn't be changed despite of containing Ticket Release1 V2!</body>
</note>
После применения команды
[arif@arif ~]$ cat /tmp/temp.xml | sed -r 's/Ticket_[A-Za-z0-9]+/Ticket_Final/g'
<?xml version="1.0"?>
<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#Ticket_Final)>
<!ELEMENT from (#Ticket_Final)>
<!ELEMENT heading (#Ticket_Final)>
<!ELEMENT body (#Ticket_Final)>
]>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>String Replacer</heading>
<body>These text shouldn't be changed despite of containing Ticket Release1 V2!</body>
</note>
Думаю, теперь я понял это довольно последовательно. Проверено со свежей загрузкой, все работает. Но с большой оговоркой.
Сначала я отредактировал параметры keeagent следующим образом:
Agent
/home/$USER/.ssh-keeagent.sock
Затем я добавил строку в.bashrc :export SSH_AUTH_SOCK="/home/$USER/.ssh-keeagent.sock"
Я почти уверен, что агент ssh -запускается автоматически при загрузке (почти уверен, что сделал это случайно ), который обрабатывает ключи для openssh.
Большое предостережение здесь заключается в том, что ssh плохо разбирается в ключах, которые он загружает. Поэтому, если вы загрузили целую кучу ключей и хотели, чтобы он использовал последний ключ в списке, сервер в конце откажет вам, потому что вы сначала попытались использовать все остальные ключи в списке. Я предполагаю, что это связано с тем, что ssh не может знать, какой ключ связан с каким IP-адресом.
Возможно, этого можно избежать, используя.ssh/config. Но я еще не заморачивался с этим.
Но пока загружен один ключ, я могу открыть терминал и ввести ssh user@IP
, и он подключается. Я даже получаю небольшое уведомление от Keepass о том, что ключ был использован в другом приложении.
Если у кого-то уже есть идея, как сделать так, чтобы ssh использовал только определенный ключ для IP-адреса, сохраняя при этом фактические ключи в базе данных keepass, я был бы рад услышать об этом.
Похоже, мне удалось решить проблему, используя открытые ключи в ~/.ssh/config в IdentityFile.
Host hostname
Hostname IP
User user
IdentityFile ~/.ssh/key.pub
IdentitiesOnly yes
Со всеми загруженными ключами, показанными в ssh-add -l
, я могу просто вызвать хост ssh hostname
, и он выберет правильный закрытый ключ на основе открытого ключа, указанного в конфигурации.
Это не будет работать с клиентом openSSH. Он предназначен для использования с приложениями с графическим интерфейсом, такими как PuTTy или KiTTy, где вы выбираете ключевой файл, просматривая; Стиль Windows -.
Если вы хотите переключиться между приложениями, вы также можете установить PuTTy для Linux . Это должно работать так же -, что единственный способ узнать это — протестировать, так как все доступные инструкции, которые я нашел с помощью быстрого поиска, относятся к Windows.