我有一个包含以下内容的文件
hosts: files
ipnodes: files
networks: files
protocols: files
rpc: files
ethers: files
netmasks: files
我需要在这两行的末尾添加“dns”
hosts: files dns
ipnodes: files dns
Solaris服务器,在sed中具有非常有限的选项 sed -i不可用 寻找解决方法
答案 0 :(得分:2)
sed没有任何花哨的设置或就地更新将起作用:
sed 's/.*/& dns/' file
如果你需要对只有以hosts和ipnodes开头的行开头的行进行编辑,那么在命令中添加一个过滤器:
sed -e '/^hosts/ s/.*/& dns/' -e '/^ipnodes/ s/.*/& dns/' file
注意:我假设您将输出重定向到新文件,并将其替换为旧文件。
答案 1 :(得分:0)
我很惊讶Solaris sed
到底是多么微不足道。我会说在这种情况下使用awk
,但似乎已经。我的建议是不要在Solaris上编写shell脚本。如果要使用shell脚本,请停止使用Solaris并将其替换为合理的操作系统。否则使用像Python这样的编程语言来编写脚本。
前一回答:
该命令应如下所示:
sed 's/^\(hosts\|ipnodes\).*/& dns/' file
在Solaris sed上,-i
的参数是必需的(与GNU sed不同)
sed -i '.backup' 's/^\(hosts\|ipnodes\).*/& dns/' file
这将创建一个文件file.backup
。检查man sed
!