我正在尝试替换文件中的各种项目。我需要替换:/var/lib/cassandra/data
。我如何处理/
?
我试过了:
sed -i -e 's/var\/lib\/cassandra\/data\/var\/lib\/storage\/cassandra\/data/g' /etc/cassandra/conf/cassandra.yaml
结果:
sed: -e expression #1, char 65: unterminated `s' command
答案 0 :(得分:0)
使用转义来转义那些字符串中的控制符号
sed 's/\//\\\//g'
(此示例将单/
更改为\/
)
... 或更改了sed的正则表达式分隔符。
此外,您似乎使用了反引号`
而不是'
。
答案 1 :(得分:0)
sed -i -e 's/rpc_address: localhost/rpc_address: 0\.0\.0\.0/g’ /etc/cassandra/conf/cassandra.yaml
您已在全局标记g
之后插入反引号而不是单引号。只需用单引号替换反引号即可。或者复制粘贴以下命令。而且也不需要-e
标志。
sed -i 's/rpc_address: localhost/rpc_address: 0.0.0.0/g' /etc/cassandra/conf/cassandra.yaml
对于第二个你的命令,
sed -i 's~var\/lib\/cassandra\/data~var\/lib\/storage\/cassandra\/data~g' /etc/cassandra/conf/cassandra.yaml
我假设您尝试将var/lib/cassandra/data
替换为var/lib/storage/cassandra/data
。如果你想替换/var/lib/cassandra/data
,那么你去吧,
sed -i 's~\/var\/lib\/cassandra\/data~\/var\/lib\/storage\/cassandra\/data~g' /etc/cassandra/conf/cassandra.yaml
答案 2 :(得分:0)
以下是使用/
sed
的最佳方式
sed -e -i 's|/var/lib/cassandra/data|/var/lib/storage/cassandra/data|g' /etc/cassandra/conf/cassandra.yaml
您可以使用任何符号作为分隔符,只使用不属于您拥有的数据的符号。比如|