sed -e 's/cluster_name: 'Test Cluster'/cluster_name: 'Test Cluster1'/'
我有此错误信息:
sed: -e expression, char 20: unterminated `s' command
请,我该如何纠正sed命令?
$ sed -e "s/cluster_name: 'Test Cluster'/cluster_name: 'Test Cluster1'/"
或者
sed -e 's/cluster_name: '\''Test Cluster'\'\/cluster_name:' '\'Test' 'Cluster1\'/
如果没有该程序的帮助,那么用单引号引起来的单引号将更难构建。如果您需要帮助以使命令正确无误,则可以使用C程序
$ 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;
}
我正在从cygwin进行测试,但是任何* nix shell都应该相同
你看这有用
$ ./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'/
$
而如果您尝试从嫌疑犯那里
sed -e 's/cluster_name: \'Test Cluster\'/cluster_name: \'Test Cluster1\'/'
您可以使用该程序在其中查找故障
他的那个甚至没有执行
$ ./w sed -e 's/cluster_name: \'Test Cluster\'/cluster_name: \'Test C
luster1\'/'
>CTRL-C
因为它缺少单引号
$ ./w'fgg
>
也许还有其他问题。
如果您看疑犯的那只,它甚至在开始时就失败了,它在空间上破裂了
$ ./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
这个作品
$ ./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'/
将它们放在一起时,可以尝试添加空格和字符,然后查看报价模式是打开还是关闭。如果已关闭,则如果要转义单引号,请使用\'如果已打开,请使用'然后做\'将其关闭。如果在打开或关闭它的位置上失去跟踪,请添加一个空格,看看是否创建了一个新参数或不。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句