gpt4 book ai didi

unix - 尝试使用 'sed -i' 修改文件时出错

转载 作者:行者123 更新时间:2023-12-01 04:33:01 24 4
gpt4 key购买 nike

我的原始文件:

nameserver 123.23.23.12
nameserver 10.0.1.13

我想把它改成:

nameserver 10.0.0.1
nameserver 10.0.1.13

我正在使用的命令:

sed -i 's/nameserver*/nameserver 10.0.0.1/g' resolve.conf

我得到的错误:

sed: -i may not be used with stdin

此外,当我使用下面的代码测试输出时:

sed 's/nameserver*/nameserver 10.0.0.1/g' resolve.conf

我得到:

nameserver 10.0.0.1 123.23.23.12

在第二种情况下,它不会替换完整的行,而只是附加我的替换文本。

知道我做错了什么吗?

谢谢!

最佳答案

sed 's/nameserver*/nameserver 10.0.0.1/g' resolve.conf

仅匹配 nameserve 后跟零次或多次出现的 r - 本质上,只是 nameserver

如果要替换 nameserver 之后的所有内容,请使用此模式:

sed 's/nameserver.*/nameserver 10.0.0.1/g' resolve.conf

但这最终会替换您的 resolv.conf 中的两行。为什么不直接替换 IP 地址部分?

要仅替换第一次出现的内容,您可以关注此帖子:How to use sed to replace only the first occurrence in a file?

要解决 sed -i 的问题,请将零长度选项传递给 -i 选项,以便它绕过备份文件的创建:

sed -i '' ...

关于unix - 尝试使用 'sed -i' 修改文件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41966598/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com