Как я могу использовать регулярное выражение для извлечения текста, следующего за двумя условиями, в переменную?

Я хотел бы извлечь параметр для данного хоста в файле ssh_config и поместить его в переменную.

Host mysite HostName 123.1.1.1 User myuser Port 13245 GSSAPIAuthentication no IdentityFile /home/myuser/.ssh/id_dsa Host anothersite HostName 321.2.2.2 User myuser Port 22 GSSAPIAuthentication no IdentityFile /home/myuser/.ssh/anothersite_dsa 

Мне нужно сопоставить первое вхождение значения для данного параметра после того, как имя узла было сопоставлено первым. Я только начал изучать базовое регулярное выражение, и это насколько я получил сам, но у меня слишком много времени на это и я могу использовать некоторую помощь. Скрипт находит первое вхождение «IdentityFile» после того, как он соответствует «Host mysite» и заменит слово «IdentityFile» на «test».

 IDF="IdentityFile" HOST="mysite" get_host_option() { option="$IDF" [ -f /etc/ssh/ssh_config ] || return perl -0pe 's/(?<=Host[[:space:]]'"$HOST"')(.*?)'"$option"'/$1test/s' /etc/ssh/ssh_config } get_host_option "$IDS" 

Мне нужен путь, который был установлен для IdentityFile для размещения в переменной. Чтобы я мог это сделать так.

 ssh-add $IDPATH 

Попробуй это :

 perl -0ne 'print $& if /^Host.*?IdentityFile\s+\K[^\n]+/ms' file