вы можете сделать это разными способами, как показано здесь:
$ perl -F- -pale '$"="-";$#F-=2;$_="@F"' file
Разделить линии на тире, установить для соединения элементов массива значение тире, обрезать последние два элемента и установить текущую строку в массив, соединенный тире.
$ awk -F- '{
t = $1
for ( i=2; i<NF-1; i++ ) t = t FS $i
$0 = t
}1' file
Это при простой обработке строк:
$ perl -lne 'print substr($_, 0, rindex($_,"-",-1+rindex($_,"-")))' file
.
$ sed -ne '
y/-/\n/
:a;h;s/\n/-/;/\n.*\n/ba
g;P
' file
Результаты:
bucket,abc-def-ghi
bucket,dde-wwq-ooi
instance,jkl-mno-1-zzz
disk,pqr-stu-10-kuy
Если у вас установлена последняя версия OpenSSH (8.0)локально , вы можете использовать переключатель-J
(перехода ):
scp -J user@intermediate /local/path/file.txt user@target:/remote/path/
В более старых версиях (, но не ниже 7.3 ), вы можете использовать директивуProxyJump
:
scp -o ProxyJump=user@intermediate /local/path/file.txt user@target:/remote/path
Существуют и другие параметры, такие как ProxyCommand
или переадресация портов, которые вы можете использовать даже в более старых версиях OpenSSH. Они описаны в Поддерживает ли OpenSSH вход в систему с несколькими переходами?
Для загрузки см. Как загрузить файл с хоста, к которому я могу подключиться только по SSH через другой хост?