我有一个包含以下行的文件:
some.url=failover:(nio://localhost:12345)?maxAttempts=5&timeout=10000
我想用另一行完全替换这一行:
some.url=failover:(nio://someserver.com:6789)?something=10&another=6
但是下面的 sed 命令附加到该行,而不是替换它,知道我做错了什么吗?
sed -i 's~^some.url=.*$~some.url=failover:(nio://someserver.com6789)?something=10&another=6~'
最佳答案
您需要对替换部分的&
进行转义。因为它有特殊的含义(打印匹配的字符串)。
sed 's~^some\.url=.*$~some.url=failover:(nio://someserver.com6789)?something=10\&another=6~' file
示例:
$ echo 'some.url=failover:(nio://localhost:12345)?maxAttempts=5&timeout=10000' | sed 's~^some.url=.*$~some.url=failover:(nio://someserver.com6789)?something=10\&another=6~'
some.url=failover:(nio://someserver.com6789)?something=10&another=6
关于linux - 为什么这个 sed 命令替换行而不是附加到它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26235216/