Использование awk:
$ awk '{$2=substr($2,index($2,"]")+1);print $2,$3}' file
foo1 bar1
foo2 bar2
foo3 bar3
foo4 bar4
foo5 bar5
Второй параметр $2
усекается с использованием substr
из первого найденного ]
. Затем распечатываются параметры 2 и 3.
Решение следующее:
ssh -i ~/keys/pem_key.pem ec2-user@url.com "sudo docker logs \$(docker ps | grep 'test' | awk '{print\$1}')"
Хотя можно передать команду, требующую сложных кавычек, через ssh
аргумент (s )на удаленное устройство, часто проще указать ее как ввод , а не :
ssh -i ~/keys/pem_key.pem ec2-user@url.com <<'EOF'
sudo docker logs $(docker ps | grep 'test' | awk '{print$1}')
EOF
Обратите внимание, что здесь -разделитель документа 'EOF'
заключен в кавычки; это приводит к тому, что ввод передается без каких-либо изменений на удаленное устройство, которое его выполняет. На самом деле это может быть любая строка, которой нет на входе; EOF
— это обычное и простое значение типа от -до -. И вы можете использовать вместо этого <<\EOF
или <<"EOF"
, если хотите.
Также обратите внимание, что этот конкретный случай можно упростить до:
ssh -i ~/keys/pem_key.pem ec2-user@url.com <<'EOF'
sudo docker logs $(docker ps | awk '/test/{print$1}')
EOF