替换命令有问题
我有一些替换命令的问题。
输入文件我有这个
{a[$1]=a[$1]FS$2}END{for(i in a) print i,a[i]}
我想用单引号替换
'{a[$1]=a[$1]FS$2}END{for(i in a) print i,a[i]}'
使用下面提到的命令
find input.txt -exec sed 's/{a[$1]=a[$1]FS$2}END{for(i in a) print i,a[i]}/'{a[$1]=a[$1]FS$2}END{for(i in a) print i,a[i]}'/g' {} ;
我收到这样的错误
bash: syntax error near unexpected token `('
没有找到相关结果
已邀请:
4 个回复
久纳禾澎
或
替换你的
。 作为猜测这个问题的提示,这里的抱怨来自shell,这意味着即使你的命令行也是错误的。 其次,你应该知道美元和圆括号是sed正则表达式中的特殊字符。你可能不得不逃避它们。有关详细信息,请阅读
。 第三,我不确定
是否有效。我猜你的意思是
?
粱委教
命令,这意味着shell正在尝试处理该行。当Benoit的编辑正确地将您的问题引入语法颜色时,这实际上变得非常明显。你可以看到第二行
(替换文本的第一个字符)由于字符串终止而将颜色从红色变为黑色。 另外,
不喜欢使用裸
,因为它们表示正则表达式中的字符类。 你可以解决这两个问题:
哪个输出:
所以基本上,转义搜索字符串中的方括号,以便将它们视为文字并在替换字符串中使用
而不是
。
芭隘的盘石
文件中的单引号?它只是你编辑的一个文件。没有必要使用find。 (除非你不知道它在哪里)。
荤碗