$ sed -e "s/cluster_name: 'Test Cluster'/cluster_name: 'Test Cluster1'/"
ou
sed -e 's/cluster_name: '\''Test Cluster'\'\/cluster_name:' '\'Test' 'Cluster1\'/
O único com todas as citações simples foi mais difícil de construir sem este programa para ajudar, Se você quiser alguma ajuda para obter o comando correto, existe um programa C que você pode usar
$ cat w.c
#include <stdio.h>
int main(int argc, char *argv[]) {
int i = 0;
while (argv[i]) {
printf("argv[%d] = %s\n", i, argv[i]);
i++;
}
return 0;
}
Estou testando a partir do cygwin, mas qualquer shell * nix deve ser o mesmo
Você vê isso funciona
$ ./w sed -e "s/cluster_name: 'Test Cluster'/cluster_name: 'Test Clust
er1'/"
argv[0] = F:\blah\w.exe
argv[1] = sed
argv[2] = -e
argv[3] = s/cluster_name: 'Test Cluster'/cluster_name: 'Test Cluster1'/
$
Considerando que se você tentar o de suspectus
sed -e 's/cluster_name: \'Test Cluster\'/cluster_name: \'Test Cluster1\'/'
Você pode usar o programa para encontrar a falha nele
O seu nem sequer executa
$ ./w sed -e 's/cluster_name: \'Test Cluster\'/cluster_name: \'Test C
luster1\'/'
>CTRL-C
Porque tem uma citação simples em falta
$ ./w 'fgg
>
entre talvez outros problemas.
E se você olhar para o suspeito, ele falha mesmo perto do começo, ele quebra no espaço
$ ./w sed -e 's/cluster_name: \'Test Clu
argv[0] = f:\blah\w.exe
argv[1] = sed
argv[2] = -e
argv[3] = s/cluster_name: \Test
argv[4] = Clu
Este aqui funciona
$ ./w sed -e 's/cluster_name: '\''Test Cluster'\'\/cluster_name:' '\'
Test' 'Cluster1\'/
argv[0] = F:\blah\w.exe
argv[1] = sed
argv[2] = -e
argv[3] = s/cluster_name: 'Test Cluster'/cluster_name: 'Test Cluster1'/
Ao colocá-lo junto, você pode tentar adicionar um espaço e um caractere e, em seguida, ver se o modo de cotação está ativado ou desativado. Se estiver desligado, se você quiser escapar de uma cota única, use \ 'Se estiver ligado e desligue-o com' e '\ Se você perder a faixa se estiver ligado ou desligado, adicione um espaço, veja se ele cria um novo parâmetro ou não.